꽤 많은 시간 동안 다음과 같은 문제에 봉착했습니다. NSManagedObject 하위 클래스 객체를 포함하는 두 개의 NSArrays가 있습니다. 그들은 다른 출처에 의해 먹이를 먹었지 만 그 안의 개체는 여전히 동일한 속성/값을 가지고 있습니다. 지금하고 싶은 것은 배열 A에 배열 B의 객체가 포함되어 있는지, 아니면 그 반대인지를 확인하는 것입니다. 아쉽게도 NSArray의 containsObject-method가 여기에서 작동하지 않습니다. 각 객체의 동일성 검사에 ID 테스트를 사용한다고 생각합니까?서로의 객체 (NSManagedObject)를 포함하는 두 개의 NSArrays를 확인하십시오.
그럼, 아무도 실마리를 가지고 있습니까?
내 비교 방법으로 NSSets에 내 개체를 캡슐화하려고 시도했으나 NSManagedObject 하위 클래스의 isEqual 등을 "재정의하면 안된다"는 이유로 특히 잘 작동하지 않았습니다.
는 여기에 코드입니다 : 어떤 힌트 사전에
//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];
}
}
감사)
이러한 배열에 개체가 두 개 이상 있으면 매우 비싸고 속도가 느립니다. –