【问题标题】:Where to save and load large files in IOS [duplicate]在IOS中保存和加载大文件的位置[重复]
【发布时间】:2023-03-08 14:09:01
【问题描述】:

我希望在我的应用程序中,能够允许用户保存大图像(jpg)以及每个图像的数据(txt)并加载图像/数据。我无法弄清楚这些图像和文本文件的保存位置。由于图像文件的大小,Userdefault 不起作用,我不想保存在文档目录中,因为这样用户就可以访问并可能损坏数据。

在哪里可以为我的应用保存大型数据文件以便我以后加载它们?

【问题讨论】:

  • 将核心数据用于商店形象。
  • 我不希望用户访问保存的数据,所以我不能在我的 info.plist 中输入“应用程序支持 iTunes 文件共享”?
  • @bakalolo 你终于解决你的问题了吗?

标签: ios swift


【解决方案1】:

如果由于某种原因您不想使用文档目录,或者您希望将这些数据放在单独的文件夹中,或者您不想永久保存它们,您也可以创建自己的临时目录

将数据保存为新目录中的文件(swift 3)

func saveToMyDirectory(data: Data, filename: String) {
    var tempDirectoryURL = NSURL.fileURL(withPath: NSTemporaryDirectory(), isDirectory: true)
    tempDirectoryURL = tempDirectoryURL.appendingPathComponent(filename)
    do {
        try data?.write(to: tempDirectoryURL)
    } catch {}
}

替代方法:使用 Apple 的 UIDocumentInteractionController 或 UIActivityViewController 并让用户选择如何保存他/她的文档:

https://developer.apple.com/documentation/uikit/uidocumentinteractioncontroller

https://developer.apple.com/documentation/uikit/uiactivityviewcontroller

【讨论】:

    【解决方案2】:

    您可以在应用程序目录文件夹中保存和检索您的文件。您也可以使用 iCloud 来保存您的文件。

    如果您想从目录文件夹中保存和检索文件,请使用以下代码。

    Xcode 8.3.2 Swift 3.x。使用 NSKeyedArchiver 和 NSKeyedUnarchiver

    从文档中读取文件

    let documentsDirectoryPathString = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first!
    let documentsDirectoryPath = NSURL(string: documentsDirectoryPathString)!
    let jsonFilePath = documentsDirectoryPath.appendingPathComponent("Filename.json")
    
    let fileManager = FileManager.default
    var isDirectory: ObjCBool = false
    
    if fileManager.fileExists(atPath: (jsonFilePath?.absoluteString)!, isDirectory: &isDirectory) {
    
    let finalDataDict = NSKeyedUnarchiver.unarchiveObject(withFile: (jsonFilePath?.absoluteString)!) as! [String: Any]
    }
    else{
         print("File does not exists")
    }
    

    将文件写入文档

    NSKeyedArchiver.archiveRootObject(finalDataDict, toFile:(jsonFilePath?.absoluteString)!)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-09
      • 2010-10-21
      • 2018-02-24
      • 2020-06-14
      • 2012-10-23
      • 2016-06-18
      • 1970-01-01
      相关资源
      最近更新 更多