从icloud打开文件时Swift 4应用程序崩溃

时间:2018-11-21 17:51:25

标签: ios swift file icloud

我有一个问题,当我从iCloud打开文件时,我的应用程序崩溃了。如果我使用 Document Picker 从文档中打开此文件,一切正常。但是,如果我尝试从应用程序外部打开,例如从iCloud或Safari浏览器下载,则会崩溃。如果从本地存储“我的iPhone”打开它,它也可以正常工作。有趣的是,它在一周前还不错:)

因此在AppDelegate中,我实现了以下方法:

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {}

根据日志,由于文件不存在,导致崩溃。

file:///private/var/mobile/Library/Mobile%20Documents/com~apple~CloudDocs/Desktop/twic1121.pgn

这是我从参数打印URL的结果。我认为这意味着文件在那里。

但是,如果我这样做:print(fm.fileExists(atPath: url.path)),则为 false

很明显,在let dataFromFile = fm.contents(atPath: url.path)之后 这是

我不知道这里可能是什么问题。所以这里真正的问题是为什么这是零?

1 个答案:

答案 0 :(得分:0)

看来错误可能是很多东西,都与您正在应用代码的类(AppDelegate)或您正在调用的方法无关。

我的猜测是您正在调用的网址未正确构建(未指向您要指向的正确对象)。由于许多原因。

查看以下原因之一是否可以解决您的问题:

(1)您所调用的URL的后缀为“ pgn”。如果您要加载图片,则后缀可能是错误的。在这种情况下,它可能是某些已知且受支持的格式,例如“ png”,“ jpeg”或“ jpg”。

(2)代码中间的“%20”符号也将引发一个标志。看来不是swift的正确URL对象。也许您使用的URL的显示方式不正确。

(3)com〜apple〜CloudDocs也取消标记,因为它不太可能在URL中传递“〜”符号。这也强烈表明您使用的URL可能没有正确显示。

我认为您的网址未指向您要指向的位置,导致“确实存在”方法返回false,并且加载结果为nil。

如果所有这些都不能解决您的问题,请发布代码的更多详细信息。 特别是要使用什么方法来构建/创建您正在使用的URL对象,该方法指向:file:///private/var/mobile/Library/Mobile%20Documents/com~apple~CloudDocs/Desktop/twic1121.pgn