これはかなり時間がかかることを認識していますが、私は現在、最初のCoreDataプロジェクトに取り組んでいます。これまで私はそれを保存し、すべての大丈夫しかし、私は正常に動作するように関係を得るように見えることはできません。 私はExersizeを表示するテーブルビューを持っています。Exersize Categoryは、関連するExersizes(一対多)を表示するテーブルに移動します。CoreData:多対多関係の表示問題
は(画像を投稿しようとしましたが、私はまだ十分な担当者のポイントを持っていない)が、データモデルは、私が読んだすべてのものから、この
ExersizeCategory < --- >> Exersize
のように見えます私は述語を使用して結果をフィルタリングする必要があるかもしれないと信じていますが、実際にどのように動作しているか天気かどうかについては混乱しています。実際にはExersize CategorysとExersizesオブジェクトを作成して保存して、最初はここで
は、私が作成し、(また、テキストフィールドのエントリにその名前を設定)
ExersizeCategory *exersizeCategory = [NSEntityDescription insertNewObjectForEntityForName:@"ExersizeCategory"
inManagedObjectContext:self.managedObjectContext];
exersizeCategory.name = self.textField.text;
[self.managedObjectContext save:nil]; // write to database
を保存しています方法ですそして、ここで(ほとんど同じ)exersizesのコード
// Create a new instance of the entity
exersize = [NSEntityDescription insertNewObjectForEntityForName:@"Exersize"
inManagedObjectContext:self.managedObjectContext];
exersize.name = self.textField.text;
[self.managedObjectContext save:nil]; // write to database
が、ありますこれは、オブジェクトを作成するには、私はまだcoreDataGeneratedAccessorsを実装するために持っているtableviewsでそれらを見て、どのようにそれらの画像に収まるのですか?
@interface ExersizeCategory (CoreDataGeneratedAccessors)
- (無効)addExersizesObject:(Exersize *)の値。
- (void)removeExersizesObject:(Exersize *)value;
- (void)addExersizes:(NSSet *)values;
- (void)removeExersizes:(NSSet *)values;
私は(私はwww.timroadly.comで通過してたチュートリアルを見つける)あなたが取得するために記述する必要があるコードの量を減らすように思わCoreDataTableViewControllerクラスを使用していることを言及する必要があります作成スタンフォード大学。 side-note:これをサブクラス化せず、スタンダードに気づいたように標準的な方法を使用する方がよいでしょうか?スタンフォードに著作権があると言いますので、公開したいアプリで使用できるかどうかは分かりません。 ?ここで
は、私は現在、私はこれを実現する際に重要な部分を見逃している知っているExersizes
- (void)setupFetchedResultsController {
// 1 - Decide what Entity you want
NSString *entityName = @"Exersize"; // Put your entity name here
NSLog(@"Setting up a Fetched Results Controller for the Entity named %@", entityName);
// 2 - Request that Entity
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:entityName];
// 3 - Filter it if you want
//currently unsure about this!
//request.predicate = [NSPredicate predicateWithFormat:@""];
// 4 - Sort it if you want
request.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"name"
ascending:YES
selector:@selector(localizedCaseInsensitiveCompare:)]];
// 5 - Fetch it
self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request
managedObjectContext:self.managedObjectContext
sectionNameKeyPath:nil
cacheName:nil];
[self performFetch];
}
を表示するためにフェッチしていますが、私はちょうどよく分からない方法ですこれは、どこで。 Iveは数日間コアデータにしかいませんでしたので、かなり勉強になりました!
光を放つことができる人/ありがとう、または正しい方向に私を押してください!
こんにちはアンドリューはスペルをよく叫んでいますが、一貫性のためにちょうど同じように保ちます。いくつかのことを読んでもう少し読んだ後、私は正しくフェッチしていると信じていますが、exersizeオブジェクトを作成しているときは、exersizeのNSSet数が0のままであるため、関係に配置できないようです。試みました[exersizeCategory addExersizesObject:exersize];しかし、それは動作していないようですか?私は見つけることができるすべての解決策を試しましたが、私はまだどこかで間違っています。何かが明らかに間違っているようですか?もう一度ありがとう –
f.perdition、すべてのCDの関係は逆です。したがって、関係が1対多であり、逆数が1対1である場合、単純な割り当てによって関係を構築することができる。次のように: 'exercise.exercises = exercises;' Andrew – adonoho
Andrew、私は前と同じ問題を起こすようには思えません。 exerciseCategoryオブジェクトはフェッチされ作成されていますが、演習自体はarntである必要があります。 printステートメントを通して私は管理されたオブジェクトのコンテキストが渡されて何かが作成されていることがわかりますがNSSetは空のままですし、tableviewもそうですが、そのエントリを取得していて、取ってくる。何が起こっているのでしょうか?私はそれが状況を助ける場合は、より多くのコードを表示するために自分の投稿を更新することができますか?元気いっぱい! –