문제

나는 초기화하고있다 NSManagedObject 서브 클래스 사용 :

- (void)setValuesForKeysWithDictionary:(NSDictionary *)keyedValues

나는 또한 고의로 정의되지 않은 키를주고 있습니다. ~해야 한다 예외를 던져.

그래서 나는 구현했다 :

- (void)setValue:(id)value forUndefinedKey:(NSString *)key

키가 정의되지 않은 경우 올바른 키에 매핑합니다.

그러나 내 구현은 결코 호출되지 않습니다 NSManagedObject구현이 사용되며 이는 차례로 사용됩니다 아직 예외를 던집니다.

방지하는 행동 (또는 버그)이 있습니까? setValuesForKeysWithDictionary: 사용에서 NSManagedObject 서브 클래스 구현 setValue:forUndefinedKey:?

요청대로 코드를 추가하지만 호출되지 않은 기존 메소드를 구현하고 있기 때문에 도움이되는 방법을 모르겠습니다.

맥락에서:

- (Company*)companyWithDictionary:(NSDictionary*)values{

    Company* newCompany = (Company*)[NSEntityDescription insertNewObjectForEntityForName:@"Company" inManagedObjectContext:self];

    [newCompany setValuesForKeysWithDictionary:values];

    return newCompany;
}

에서 Company 서브 클래스 (호출되지 않음) :

- (void)setValue:(id)value forUndefinedKey:(NSString *)key{

    if([key isEqualToString:idKey]){

        [self setValue:value forKey:@"uniqueID"];

    }else if([key isEqualToString:descriptionKey]){

        [self setValue:value forKey:@"descriptionText"];

    }else if([key isEqualToString:timeUpdatedKey]){

        [self setValue:value forKey:@"dateUpdated"];

    }else{

        [super setValue:value forUndefinedKey:key];

    } 
}
도움이 되었습니까?

해결책

nmanagedObject에 본질적인 것은 없다. 나는 내가 작업중 인 앱에서 정확히 이것을하고있다. 더 많은 코드를 게시 할 수 있습니까?

한 가지 생각도 : 당신은 그것이 확실합니까? setValue:forUndefinedKey: 예외를 던지고 있습니까? 관리되는 개체의 경우, 나는 당신도 구현해야한다고 확신합니다. valueForUndefinedKey: (Getter) 일을 제대로 작동하게합니다.

다른 팁

간단한 질문이지만 모델의 엔티티에 NSMANADEDOBJECT 서브 클래스의 클래스 이름을 지정하고 있습니까?

또한, 당신은 당신이 관리되는 객체를 초기화하고 있다고 말했습니다 ... 어떻게? +[nsentityDescription insertNewObjectForentityForname : inmanagedObjectContext :]를 통해 삽입해야합니다. 대부분의 경우, 아무런 이유가 없다면.

Coredata 프레임 워크의 빠른 클래스 덤프가이를 나타냅니다 NSManagedObject 또한 무시합니다 setValuesForKeysWithDictionary:, 따라서 그것은 성능의 이유 또는 그와 비슷한 일을 위해 그 방법에 대해 약간의 사용자 정의를하고있는 것처럼 보입니다. 나는 아마도 내 자신의 방법을 작성할 것입니다. setValuesForKeysWithDictionary: 대신 전체 혼란을 피하기 위해 전화하십시오. 이 같은:

- (void)mySetValuesForKeysWithDictionary:(NSDictionary*)dict
{
    for (NSString* key in dict)
        [self setValue:[dict objectForKey:key] forKey:key];
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top