2017-04-22 9 views
0

操作を使用してデータをplistファイルに保存しようとしています。 私は非同期保存を実装したいので、start() をオーバーライドしました。しかし、より節約したチェックをしようとすると、isFinishedはfalseのままです。私は操作isFinished常にfalse

class OperationDataManager: Operation { 

    var user: AppUser? 
    override func start() { 
     if let plist = Plist(name: "userFile") { 
      if let dict = plist.getMutablePlistFile() { 
       dict["userName"] = user?.userName 
       dict["userInfo"] = user?.userDescription 
       dict["userColor"] = NSKeyedArchiver.archivedData(withRootObject: user?.userColor) 
       dict["userImage"] = UIImagePNGRepresentation((user?.userImage)!) 
       do { 
        try plist.addValuesToPlistFile(dictionary: dict) 
       } catch { 
        print(error) 
       } 
      } 
     } 

     if isFinished == true { 
      print("Operation: finished") 
     } else { 
      print("Operation: not finished") 
     } 
    } 
} 

何が問題になっていますが、計画通り しかしデータは、正常に保存されていますか?

答えて

0
  1. isFinishedmain完了するまでtrueに設定されていません。 truestartまたはmainに決してなりません。
  2. isFinishedを確認する必要はありません。 mainが終了すると終了します。
+0

ありがとうございました。しかし、具体的なケースがあります。何か問題が生じた場合にエラーアラートを表示したい。私はisFinishedフラッグがそれに十分にいいと思った。あなたはその場合に何をアドバイスできますか? – dand1

+0

どこが間違っていましたか? – rmaddy

関連する問題