ios - 操作 isFinished 始终为 false

标签 ios swift nsoperation nsoperationqueue

我正在尝试使用操作将数据保存到 plist 文件。 我想实现异步保存,所以我重写了 start() 但是,当我尝试检查保存是否已完成时,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")
        }
    }   
}

出了什么问题?

最佳答案

  1. isFinishedmain 完成之前不会设置为 true。在 startmain 中它永远不会是 true
  2. 您的操作无需检查isFinished。当 main 到达末尾时,它就完成了。

关于ios - 操作 isFinished 始终为 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43564915/

相关文章:

ios - PayMill iOS SDK : Swift 1. 1 > 1.2 兼容性

swift - 获取进程的所有打开文件导致 errno 12 = Out of Memory

iphone - NSOperation 中的 dealloc

objective-c - NSOperation 中的 ASINetworkQueue 阻塞主线程

objective-c - iOS 正则表达式 : Unknown escape sequence "\|"

ios - 对象查看 - UICollectionView

swift - “ fatal error :在展开可选值时意外发现nil”是什么意思?

objective-c - insertNewObjectForEntityForName 上的 exc_bad_access :inManagedObjectContext

ios - NSURLSession下载任务使用默认的 session 配置在调试中增加了内存

ios - 如何设置图像大小以提高 OCR 输出?