我被困在以下问题相当一段时间了: 我有两个NSArrays,都包含NSManagedObject子类对象。 它们由不同的来源提供,但其中的对象仍具有相同的属性/值。 我现在想要做的是检查数组A是否包含数组B中的对象,反之亦然。 不幸的是NSArray的containsObject方法在这里似乎不起作用。 我认为它在每个对象上使用了id-testing进行相等性检查,不是吗?检查两个NSArrays包含对方的对象(NSManagedObject)
那么,有没有人有线索,要尝试什么?
我甚至试图将我的对象封装在NSSets中,使用成员:作为我的比较方法,但这并没有解决,尤其是因为“你不能重写”isEqual等NSManagedObject子类。
这里有一个代码片段:
//manufacturers is an array, parsed out of some xml here...
for(Manufacturer *manu in [fetchedResultsController fetchedObjects])
{
if(![manufacturers containsObject:manu])
{
NSLog(@"Deleting %@", manu.name);
[self.mContext deleteObject:manu];
}
}
for(Manufacturer *manu in manufacturers)
{
if(![[fetchedResultsController fetchedObjects] containsObject:manu])
{
NSLog(@"Adding %@", manu.name);
[newArray addObject:manu];
}
}
预先感谢任何暗示;)
如果这些数组包含多个对象,则这非常昂贵并且速度很慢。 – 2012-02-15 08:29:09