我正在使用以下代码崩溃。self.items
是具有字符串类型属性的 of NSArray
:NSManagedObjects
"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 = ....
在调试器中打印出来表明这allID
是 aNSKeyValueSlowMutableArray
而不是__NSArrayM
常规的NSMutableArray
.
所以我把它改成了这个,它可以工作:
NSMutableArray *allIDs = [[self.items valueForKey:@"id"] mutableCopy];
这两个调用之间有什么区别会使前者崩溃但后者起作用?我怀疑这与 KVO 和代理集合有关,但不太了解。