我有一个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
答案 0 :(得分:2)
错误很明显:
PDFDocument(url:
预计URL
,您传递String
,这是典型的类型不匹配。
您必须从字符串
创建URL实例documents = arrayUrl.flatMap { PDFDocument(url: URL(fileURLWithPath: $0) ) }
但是,不建议您保存完整路径,因为Documents文件夹的路径会发生变化。仅保存文件名或相对路径,并在每次启动应用程序时获取Documents文件夹的实际路径。