代码之家  ›  专栏  ›  技术社区  ›  user2296278

NSArrayURL,用户默认文件路径和URL

  •  0
  • user2296278  · 技术社区  · 8 年前

    我有一个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 回复  |  直到 8 年前
        1
  •  2
  •   vadian    8 年前

    错误很明显:

    PDFDocument(url: 期望 URL ,您通过 String 这是典型的类型不匹配。

    您必须从字符串创建URL实例

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

    但是,不鼓励您保存完整路径,因为文档文件夹的路径会更改。仅保存文件名或相对路径,并在每次应用程序启动时获取文档文件夹的实际路径。