0

我正在尝试获取核心数据库的记录,但它给了我以下错误。

错误-[__NSDictionaryM intValue]:无法识别的选择器发送到实例 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 回答