我的CompletionHandler无法执行。为什么?

时间:2018-08-03 12:35:35

标签: swift uidocument

我有以下代码:

document?.open { success in
        if success {
            print("file opened")
            self.consumed = self.document?.consumed
        } else {
            print("file read failure")
        }
    } 

可以看出,我有成功和失败的印记。但是都不会打印。

合理的问题是文件不存在,不可读或什么东西。因此,我在此代码之前添加了以下内容:

if document != nil {
        print("not nil")
        let asString = document?.fileURL.path
        let toast = FileManager.default.fileExists(atPath: asString!)
        if toast {
            print("file exist")
        } else {
            print("file does not exist")
        }
    } else {
        print("nil")
    }
 if FileManager.default.isReadableFile(atPath: (document?.fileURL.path)!)
    {
        print("readable")
    }
    else
    {
        print("not readable")
    }

对我来说,它是:不为nil,存在且可读。

是否有时会缺少此完成代码?能够打开该文件很好,但是我认为它不起作用是第一步。

关于文件的注释。它是从分发包中读取并复制到Documents目录的文件。我查看了文件的属性,却没有发现任何奇怪的地方。

1 个答案:

答案 0 :(得分:0)

尝试将document?.open替换为document!.open,或使用保护措施来确保文档不为零。原因是如果document为nil,则会跳过整个呼叫。

Here,您可以阅读可选链接。