2017-04-22 57 views
0

我试图使用操作将我的数据保存到plist文件。 我想实现一个异步保存,所以我已经覆盖了start() 但是,当我尝试检查是否保存已完成isFinished仍然是错误的。 但是数据已经成功保存,因为我计划操作始终为假

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. isFinished未设置为true后才main完成。它永远不会是true里面的startmain
  2. 您的操作无需检查isFinished。当main到达结束时完成。
+0

恩,谢谢你的回答。但是,我有特定的情况:我想显示一个错误提醒,以防出现问题。我认为这是成功的标志就足够了。在这种情况下你能建议什么? – dand1

+0

错了哪里? – rmaddy