NSArrayURL,userDefault filePath和URL

时间:2018-01-31 20:39:57

标签: swift nsuserdefaults nsurl userdefaults

我有一个pdf源代码,我想在数组中添加Url并使用UserDefault

let defaults = UserDefaults.standard

struct Constants {

    static let myKeyURL = "myKeyUrl"

}

我下载了像这样的Pdf

let documentsPath =NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]

let fileName = urlString as NSString;
let filePath="\(documentsPath)/\(fileName.lastPathComponent)";

我保存像这样的路径

var arrayUrl = [String]()
arrayUrl.append(filePath)
self.defaults.set(arrayUrl, forKey: Constants.myKeyURL)

现在我想阅读

var arrayUrl = [String]()
defaults.stringArray(forKey: Constants.myKeyURL)
arrayUrl = defaults.stringArray(forKey: Constants.myKeyURL)!

我需要阅读此模型

documents = arrayUrl.flatMap { PDFDocument(url: $0 ) }

但我收到了 无法将“String”类型的值转换为预期的参数类型“URL” 我需要此格式的URL( arrayUrl )文件 file:///private/var/mobile/Containers/Data/Application/----/Documents/Sample.pdf

1 个答案:

答案 0 :(得分:2)

错误很明显:

PDFDocument(url:预计URL,您传递String,这是典型的类型不匹配。

您必须从字符串

创建URL实例
documents = arrayUrl.flatMap { PDFDocument(url: URL(fileURLWithPath: $0) ) }

但是,不建议您保存完整路径,因为Documents文件夹的路径会发生变化。仅保存文件名或相对路径,并在每次启动应用程序时获取Documents文件夹的实际路径。