私のアプリでは、大きな画像(jpg)と各画像(txt)のデータを保存して画像/データを読み込ませることができます。これらの画像とテキストファイルをどこに保存するのかが分かりません。 Userdefaultはイメージファイルのサイズのために動作しません。ユーザーがデータにアクセスして潜在的に破損する可能性があるため、ドキュメントディレクトリに保存したくありません。IOSの大きなファイルを保存してロードする場所
大きなデータファイルを保存して後で読み込める場所はありますか?
私のアプリでは、大きな画像(jpg)と各画像(txt)のデータを保存して画像/データを読み込ませることができます。これらの画像とテキストファイルをどこに保存するのかが分かりません。 Userdefaultはイメージファイルのサイズのために動作しません。ユーザーがデータにアクセスして潜在的に破損する可能性があるため、ドキュメントディレクトリに保存したくありません。IOSの大きなファイルを保存してロードする場所
大きなデータファイルを保存して後で読み込める場所はありますか?
ディレクトリフォルダにファイルを保存して取得することができます。また、iCloudを使用してファイルを保存することもできます。
ディレクトリフォルダからファイルを保存および取得する場合は、以下のコードを使用します。
Xcode 8.3.2 Swift 3.x。文書
NSKeyedArchiver.archiveRootObject(finalDataDict, toFile:(jsonFilePath?.absoluteString)!)
何らかの理由でドキュメントディレクトリを使用しない場合から
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とNSKeyedUnarchiver
読書ファイルを使用して、またはそれらのデータを個別のフォルダに入れたい場合や、永続的に保存したくない場合は、独自の一時ディレクトリを作成することもできます。
新しいディレクトリ(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
使用コアデータ。 –
保存したデータにユーザーがアクセスしないようにするため、info.plistに「アプリケーションがiTunesファイル共有をサポートしています」ということはできません。 – bakalolo
@bakalolo最後に問題を解決しましたか? –