我遇到了以下代码崩溃的问题。
在调试器中输出后发现,对于普通的NSMutableArray,
self.items
是一个NSManagedObjects
的NSArray
,其中包含一个类型为字符串的"id"
属性:NSMutableArray *allIDs = [self.items mutableArrayValueForKey:@"id"];
NSArray *presentIDs = // a subset of allIDs
[allIDs removeObjectsInArray:presentIDs];
这是崩溃信息:
'Unacceptable type of value for attribute: property = "id"; desired type = NSString; given type = __NSArrayM; value = ....
在调试器中输出后发现,对于普通的NSMutableArray,
allID
是一个NSKeyValueSlowMutableArray
而不是__NSArrayM
。
所以我改成了这个,它可以工作:
NSMutableArray *allIDs = [[self.items valueForKey:@"id"] mutableCopy];
mutableArrayValueForKey:
和可变版本的valueForKey:
是相同的。 - James Kuang