2017-04-22 76 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