38

元のアプリのように、今日の拡張機能で私の CoreData モデルを迅速に操作することは可能ですか? はいの場合、NSManagedObjectContext を作成するにはどうすればよいですか?
グループ識別子のほかに、私は本当に手がかりがありませんが、残念ながらコンテキストを取得する方法がわかりません..
過去に、CoreDataを使用したいという最初のチェックでアプリを作成し、次にmanagedObjectContextを取得しました私のAppDelegate経由..しかし、どうすれば拡張機能でそのようなことを行うことができますか? Appleはそれに関する情報を提供していません..

AppDelegate で次の行を編集しました。

NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"HTWcampus.sqlite"];

これに(グループを両方のターゲットに含めた後):

NSURL *storeURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.BenchR.TodayExtensionSharingDefaults"];
storeURL = [storeURL URLByAppendingPathComponent:@"HTWcampus.sqlite"];
NSLog(@"StoreURL2: %@", storeURL);

これで、私のアプリの既存のデータベースはなくなりました (データベースを共有セグメントに配置することがうまくいったと思うので、素晴らしいことです)。

しかし、拡張機能で自分のコンテキストのインスタンスを作成するにはどうすればよいでしょうか? また、NSManagedObject サブクラスにアクセスするにはどうすればよいですか?

拡張機能には、これまでのところ次のコードがあります。

var context: NSManagedObjectContext!

override func viewDidLoad() {
    super.viewDidLoad()

    var storeURL = NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier("group.BenchR.TodayExtensionSharingDefaults")
    storeURL = storeURL?.URLByAppendingPathComponent("HTWcampus.sqlite")
    let modelURL = NSBundle.mainBundle().URLForResource("HTWcampus", withExtension: "momd")
    let model = NSManagedObjectModel(contentsOfURL: modelURL)
    let coordinator = NSPersistentStoreCoordinator(managedObjectModel: model)
    coordinator.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: storeURL, options: nil, error: nil)
    context = NSManagedObjectContext()
    context.persistentStoreCoordinator = coordinator
}

これは正しいですか?はいの場合、そこに NSManagedObject-Subclasses を取得するにはどうすればよいですか? また、momd ファイルを拡張ターゲットに追加する必要がありますか? はいの場合、どうすればそれを行うことができますか?

4

1 に答える 1