0

私はここで何を間違っていますか?信じられないほどイライラします。

プロパティを持つ特定のタイプのオブジェクトを含む配列があります。そのプロパティを単に「番号」と呼びます。タイプNSUIntegerです。

「数値」の属性を持つエンティティもあり、タイプはInteger 64.

オブジェクトを含む他の配列には存在しないCore Data ストア内のすべてのオブジェクトを検索するフェッチ リクエストを作成しようとしています。

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
fetchRequest.entity = [NSEntityDescription entityForName:@"EntityName" inManagedObjectContext:context];
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"NOT (%@.number IN number)",someArrayWithObjects];
NSError *error = nil;
NSArray *notMatchingObjects = [context executeFetchRequest:fetchRequest error:&error];

これは nil 配列を返します。他の配列には存在しない番号を持つオブジェクトがローカル ストアにあることはわかっています。私は何か間違ったことをしていますか?

4

2 に答える 2

1

NSArrays はキーと値のコーディングに準拠しており、プロパティ値の配列を提供するという事実を使用しますvalueForKey:(NSUInteger の場合、それらは NSNumbers でラップされます)。

NSArray *predicateInts = [someArrayWithObjects valueForKey:@"number"];
[NSPredicate predicateWithFormat:@"NOT (number IN %@)",predicateInts];
于 2012-09-09T02:28:24.560 に答える
0

最初にNSNumber、除外したい数値だけを含むオブジェクトの配列を作成する必要があります。

次に、次のフェッチ リクエストを使用できます。

[NSPredicate predicateWithFormat:@"NOT (number IN %@)", arrayWithNumbers];
于 2012-09-09T02:27:12.703 に答える