2010-12-16 9 views
1
私の最初のコアデータプロジェクトに問題が

...Core Dataは、既存の多対多の私は、多くの関係に多くの内2つのエンティティを持っている

関係をチェック。

ユーザーが、私はそのボイラーが既にページが管理して、その関係を切り替える引用と関係を持っているかどうかを知りたいのUITableView行のボイラーを選択します。

私は述語がボイラーが選択されているが、私は非常にこの権利を取得することはできません...

- (void)managedObjectSelected:(NSManagedObject *)managedObject 
    { 

    NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
    [request setEntity:[NSEntityDescription entityForName:@"Boiler"  inManagedObjectContext:managedObject.managedObjectContext]];  

    request.predicate = [NSPredicate predicateWithFormat:@"ANY myQuote = %@", quote]; 
    NSError *error; 
    NSUInteger count = [managedObject.managedObjectContext countForFetchRequest:request error:&error]; 

    if(count==0){ 
     [quote addMyBoilersObject:(Boiler*) managedObject]; 
    } 
    else { 
     [quote removeMyBoilersObject:(Boiler*) managedObject]; 
    } 

    [managedObject.managedObjectContext save:&error]; 

    } 

任意の助けを知らないか、ポインタがになりますので、以下のコードは失敗だと思います大歓迎...これにアプローチする

答えて

0

一つの方法は、あなたのUITableViewを埋めるためにNSFetchedResultsControllerを使用することです。これを行うと、選択を切り替えることができるはずです

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 

    { 
    // Get the Boiler that was selected. 
    Boiler *boiler = (Experiment *) [fetchedResultsController objectAtIndexPath:indexPath]; 
    if (boiler) 
     { 
     if ([[self quote] boilers] containsObject:boiler]) 
      { 
      // connected, so disconnect 
      } 
     else 
      { 
      // disconnected, so connect 
      } 

     } 
    } 

とにかく、このような試みをしましたか?

+0

これは正しいアプローチのように思えるが、あなたはあなたの例では、コマンド「が含まれている」、コンパイラはそれを好きではないと私はチュートリアルを見つけるのに苦労してるための参照に私を指すことができます。ありがとう。 – MattSW

+0

これは私の間違いでした。訂正のための編集を参照してください。 [[self quote] boilers]はNSSetを返します。 -containsObject:NSSetのインスタンスメソッドです。お役に立てれば。 – westsider

関連する問題