0

コアデータベースのレコードをフェッチしようとしていますが、以下のエラーが発生します。

エラー-[__NSDictionaryMintValue]:認識されないセレクターがインスタンス0x13f26a60に送信されました

オンライン

NSArray *results = [moc executeFetchRequest:request error:&error];

これがフェッチリクエストの完全なコードです。

NSManagedObjectContext *moc = [delegate managedObjectContext];


NSPredicate *predicate =[NSPredicate predicateWithFormat:@"NOT (serverId IN %@)", a];
[request setEntity:[NSEntityDescription entityForName:@"Categories" inManagedObjectContext:moc]];
[request setPredicate:predicate];

NSError *error = nil;
id results = [moc executeFetchRequest:request error:&error];
NSLog(@"results %@",results);
// error handling code
[request release];
4

2 に答える 2

6

配列には数字は含まれていませんが、辞書が含まれていると思います。aたとえば、次のようになります。

NSArray *a = @[
                  @{@"serverId" : @"2", ...},
                  @{@"serverId" : @"4", ...}
              ];

それはあなたが得たエラーメッセージを正確に引き起こすからです。

「serverId」番号のみを含む配列を作成し、それを述語で使用する必要があります。

NSArray *serverIds = [a valueForKey:@"serverId"];
NSPredicate *pred = [NSPredicate predicateWithFormat:@"NOT (serverId IN %@)", serverIds];
于 2013-03-04T15:48:27.720 に答える
0

私はDeveloperと同じ問題を抱えていましたが、私の場合、エラーは間違った変換指定子を使用していたことでした。私の配列にはNSNumberオブジェクトが含まれて%ldおり、変換指定子として使用していました。Martin Rが提案したように、変換指定子を変更しました%@が、それは魅力のように機能しました。

これが誰かを助けることを願っています。

于 2013-11-18T20:40:35.280 に答える