NSPersistentContainer のカスタム ストア URL を設定する方法 質問する

NSPersistentContainer のカスタム ストア URL を設定する方法 質問する

NSPersistentContainer にカスタム store.sqlite URL を設定するにはどうすればよいですか?

NSPersistentContainer をサブクラス化するという醜い方法を見つけました:

final public class PersistentContainer: NSPersistentContainer {
private static var customUrl: URL?

public init(name: String, managedObjectModel model: NSManagedObjectModel, customStoreDirectory baseUrl:URL?) {
    super.init(name: name, managedObjectModel: model)
    PersistentContainer.customUrl = baseUrl
}

override public class func defaultDirectoryURL() -> URL {
    return (customUrl != nil) ? customUrl! : super.defaultDirectoryURL()
}

}

いい方法はあるでしょうか?

背景: App Groups の共有ディレクトリに保存する必要があります。

ベストアンサー1

これはクラスで行いますNSPersistentStoreDescription。クラスには、永続ストア ファイルが保存されるファイル URL を提供するために使用できる初期化子があります。

let description = NSPersistentStoreDescription(url: myURL)

次に、NSPersistentContainerpersistentStoreDescriptions属性を使用して、このカスタムの場所を使用するように指示します。

container.persistentStoreDescriptions = [description]

注意:まだ存在しない場合でも、myURL完全な を指定する必要があります/path/to/model.sqlite。親ディレクトリのみを設定しても機能しません。

おすすめ記事