操作isFinished总是假的

时间:2017-04-22 21:39:26

标签: ios swift nsoperation nsoperationqueue

我正在尝试使用Operation将数据保存到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")
        }
    }   
}

怎么了?

1 个答案:

答案 0 :(得分:0)

    isFinished完成之后,
  1. true未设置为main。在truestart内不会main
  2. 您的操作无需检查isFinished。它在main结束时结束。