0

コア データ モデル用に fetchedResultsController を作成していますが、argumentArray から 1 つの項目のみを使用する述語に問題があります。配列に 3 つの項目がある場合、次のように出力されます:NOT unique == "16C0629D-F8B6-4DF3-9AAD-820821B6D325"最初の項目に対してのみ検索します。

私の完全な fetchedResultsController コードは以下のとおりです。私はたくさん検索しましたが、私が使用している方法について多くの議論を見つけることができないようです. どんな助けでも大歓迎です。ありがとう!

- (void)setupFetchedResultsController
{
  NSMutableArray *opponentUniques = [NSMutableArray array];
  for (Opponent *opponent in self.opponentArray) {
    [opponentUniques addObject:opponent.personUnique];
  }
  NSPredicate *searchPredicate = nil;
  if ([opponentUniques count] > 0) {
      searchPredicate = [NSPredicate predicateWithFormat:@"!(unique == %@)" argumentArray:opponentUniques];
  }

  NSFetchRequest *allPeople = [NSFetchRequest fetchRequestWithEntityName:@"Person"];
  allPeople.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]];
  allPeople.predicate = searchPredicate;
  self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:allPeople
                                                                    managedObjectContext:self.managedObjectContext
                                                                      sectionNameKeyPath:nil
                                                                               cacheName:nil];
}
4

2 に答える 2

2

これはうまくいくかもしれません: [NSPredicate predicateWithFormat:@"NOT (self.unique IN %@)", opponentUniques]

于 2013-04-13T15:47:08.517 に答える
0

NSPredicate正しく使用していません。をご覧くださいNSCompundPredicate。のようなものが必要ですandPredicateWithArray

于 2013-04-13T15:44:53.660 に答える