Iphone NSPredicate中的NSSet,仅当我首先发出NSSet.count时有效
我有一个解决我的问题的方法,但我真的想知道为什么我会有这个问题以及如何解决它 我有一个实体A与另一个实体B相关,A的一些行在一个字段中有一个特殊标记 我想数一数有多少与B相关的A,有这个特殊的标记 如果在我创建NSSet后,我对该集合进行计数,则所有操作都会完美完成:Iphone NSPredicate中的NSSet,仅当我首先发出NSSet.count时有效,iphone,core-data,nspredicate,nsset,Iphone,Core Data,Nspredicate,Nsset,我有一个解决我的问题的方法,但我真的想知道为什么我会有这个问题以及如何解决它 我有一个实体A与另一个实体B相关,A的一些行在一个字段中有一个特殊标记 我想数一数有多少与B相关的A,有这个特殊的标记 如果在我创建NSSet后,我对该集合进行计数,则所有操作都会完美完成: NSSet *productsSet = currentList.ingredients; int countProducts = productsSet.count; NSPredicate *predicate = [NS
NSSet *productsSet = currentList.ingredients;
int countProducts = productsSet.count;
NSPredicate *predicate = [NSPredicate predicateWithFormat: @"self IN %@ AND isInList = %d", productsSet,1];
[fetchRequest setPredicate:predicate];
int totalProductsInList = [context countForFetchRequest:fetchRequest error:error];
如果我评论
int countProducts=productsSet.count;
我有这些错误:
-[NSNull unsignedIntValue]: unrecognized selector sent to instance 0x22b9cd8
2011-12-05 12:10:41.418 xxxxxxxxxx[32964:1bb03] *** Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: '-[NSNull unsignedIntValue]: unrecognized selector sent to instance 0x22b9cd8'
isInList是一个Int16
谢谢
编辑:
如果我在NSPredicate中移动1而不进行计数,则会出现相同的错误:
[NSPredicate predicateWithFormat: @"self IN %@ AND isInList = 1", productsSet;
编辑2:
由于我找不到它不起作用的原因,我检查productsSet.count,如果它大于0,我发出NSFetchrequest,问题就解决了。好的,在创建NSSet之后,我检查NSSet.count,如果它大于零,我发出NSFetchrequest,如果它为零,就不要 问题解决了,但我仍然好奇这个奇怪的错误,如果我不使用nsset.count
谢谢,关系返回的NSSet对象不是普通的NSSet,而是\n NSFaultingMutableSet类的对象。在NSPredicate中使用它似乎不安全。可能是它变成了故障状态或什么的。问题的原因与中的相同 因此,最好的方法是使用AllObject的结果或创建新的NSSet对象:
NSArray*productsArray=[currentList.allObjects]代码>
或
NSSet*productsSet=[NSSet-setWithSet:currentList.components]代码>这个错误快把我逼疯了。。。unsignedIntValue指向NSPredicate上的1?如果我像这样将1放在NSPredicte中,错误是相同的:[NSPredicate Predicate-WithFormat:@“self IN%@AND isInList=1”,productsSet];对我来说,同样的问题似乎是一个核心数据错误。我没有要检查的设备,所以我不能做同样的事情。寻找更好的解决方案…很高兴我不是唯一一个这样做的人:-)如果你找到了解决方案,请在这里发布。谢谢