私はコアデータを学んだし、私が実装する必要がありますCore Data
両方のためにiOS 9
とiOS 10
私の唯一のiPad試験装置は、iPad3の実行されていますiOS 9.3.5
。私はこの解決策に従おうとしていますhttps://charleswilson.blog/2016/09/09/out-of-context-using-core-data-on-ios-9-3-and-10-0/(スタックオーバーフローから他のソリューションを実装できなかったので、リンクからコード全体を貼り付けることができることを確認してください)。私がこれを正しく理解したかどうかlazy var persistentStoreCoordinator: NSPersistentStoreCoordinator
はlet modelURL = Bundle.main.url(forResource: modelName, withExtension: modelExtension)!
わかりません:内部には、スタックオーバーフローの他のソリューションで見られるものがあり、それらはすべてパラメーターのString
値が異なるものとして宣言されていますが、forResource
パラメーターの値はすべて同じ"momd"
ですwithExtension:
。私が使っているので実際に思った.xcdatamodeld
私は私のためのデータモデル名を入れなければならないforResource
パラメータと"xcdatamodeld"
のためにwithExtension:
:として、私の場合で、その結果、パラメータ
lazy var persistentStoreCoordinator: NSPersistentStoreCoordinator = {
let coordinator = NSPersistentStoreCoordinator(managedObjectModel: self.managedObjectModel)
let urls = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
let url = self.applicationDocumentsDirectory.appendingPathComponent("fix_it_shop").appendingPathExtension("xcdatamodeld")
do {
try coordinator.addPersistentStore(ofType: NSSQLiteStoreType, configurationName: nil, at: url, options: nil)
} catch {
let dict : [String : Any] = [NSLocalizedDescriptionKey : "Failed to initialize the application's saved data" as NSString,
NSLocalizedFailureReasonErrorKey : "There was an error creating or loading the application's saved data." as NSString,
NSUnderlyingErrorKey : error as NSError]
let wrappedError = NSError(domain: "YOUR_ERROR_DOMAIN", code: 9999, userInfo: dict)
fatalError("Unresolved error \(wrappedError), \(wrappedError.userInfo)")
}
return coordinator
}()
そうですか、それともwithExtension:
パラメータが私のxcdatamodeld
ファイル拡張子とは無関係であり、"momd"
代わりに使用する必要がありますか?私が見つけた同様の質問は、私を両方向に向けます。あなたがそれについて与えることができるどんな説明にも感謝します。
モデルのファイル拡張子として「momd」を使用する必要があります。Xcodeのコンパイルプロセス中に、.xcdatamodeldファイルが.momdファイルにコンパイルされます。これは、実際にバンドルに含まれるものです。
ただし、url
persistentStoreCoordinator定義の変数はNSPersistentStore
ファイルを参照します。このファイルは、sqliteストアの場合は拡張子「.sqlite」になります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加