2017-10-10 88 views
-1

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

哪里是我的应用程序保存大型数据文件的好地方,以便以后可以加载它们?

+0

用于存储图像使用的核心数据。 –

+0

我不希望用户访问保存的数据,所以我不能把“应用程序支持iTunes文件共享”放在我的info.plist中? – bakalolo

+0

@bakalolo你最终解决了你的问题吗? –

回答

0

您可以在应用程序目录文件夹中保存和检索您的文件。你也可以使用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)!) 
0

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

数据保存为文件在新目录中(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 {} 
} 

替代做法:使用苹果的UIDocumentInteractionController或UIActivityViewController并让用户选择如何保存他/她的文件:

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

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

相关问题