次のコードでクラッシュが発生しています。self.items
はString 型の属性を持つNSArray
ofです: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
あることがわかります。NSKeyValueSlowMutableArray
__NSArrayM
NSMutableArray
だから私はこれに変更し、それは動作します:
NSMutableArray *allIDs = [[self.items valueForKey:@"id"] mutableCopy];
前者をクラッシュさせ、後者を機能させるこれら2つの呼び出しの違いは何ですか? KVO とプロキシ コレクションに関係があるのではないかと思いますが、よくわかりません。