json 문자열을 관리되는 개체로 직접 구문 분석하려고합니다. json 문자열에 모든 문자열이 포함되어 있지만 Entity에 Date 객체가 있습니다. 내가 JSON의 DICT의 키를 통해 반복에 의해 직선을 통해 그 JSON을 구문 분석 할NSManagedObject - 속성 형식을 얻는 방법
name : NSString
dob: Date
etc...
및 설정 :
이 여기 내 JSON 문자열
{
"name":"John",
"dob": "12/12/2008",
etc...
}
하고있는 경우 내 엔티티 사람의 내 개체의 일치하는 키 값 : 모든 경우
Person *aPerson = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:managedObjectContext];
NSArray *keys = [jsonDict allKeys];
for (NSString *key in keys) {
[aPerson setValue:[jsonDict valueForKey:key] forKey:key];
}
이 유일한 작품 내 엔티티의 속성은 NSStrings입니다.
다양한 유형을 설정할 수 있도록 내 엔티티 속성의 유형/클래스를 얻으려면 어떻게해야합니까?
예 : key = @ "dob" aPerson.dob의 유형/클래스를 얻으려면 어떻게해야합니까?
그래서 내 코드는 같은 모양 :
Person *aPerson = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:managedObjectContext];
NSArray *keys = [jsonDict allKeys];
for (NSString *key in keys) {
if([[aPerson objectForKey:key] isKindOfClass:[NSDate class]])
{
// Create an NSDate object
}else{
[aPerson setValue:[jsonDict valueForKey:key] forKey:key];
}
}
감사
UPDATE : 내가 여기 isKindOfClass을 사용하여 시도 및
확인 결과가되었다입니다 :
// for key = @"name"
// aPerson.name is NSString
[[aPerson valueForKey:key] isKindOfClass:[NSString class]] => TRUE
[[aPerson valueForKey:key] isKindOfClass:[NSObject class]] => TRUE
// for key = @"age"
// aPerson.age is NSNumber
[[aPerson valueForKey:key] isKindOfClass:[NSNumber class]] => TRUE
[[aPerson valueForKey:key] isKindOfClass:[NSObject class]] => TRUE
// for key = @"dob"
// aPerson.dob is NSDate
[[aPerson valueForKey:key] isKindOfClass:[NSDate class]] => FALSE
[[aPerson valueForKey:key] isKindOfClass:[NSObject class]] => FALSE
어때? @dynamic dob 및 NSDate는 notOfClass NSDate입니다!
제가 누락 된 부분을 알려주십시오.
아래의 내 대답을 대신 위의 코드를 if ([key isEqualToString : "dob"]) {// NSDate 개체 만들기 ...} – Rog
감사합니다. Rog,하지만 구문 분석을보다 역동적으로 만들려고했습니다. 즉, 키의 이름을 알 필요없이 엔터티의 유형 즉, 유형을 선택합니다. "dob" – Bach
모든 공정한 점.이것은 if ([[movie valueForKey : key] isKindOfClass : [NSDate class]])를 사용하여 테스트되지 않았습니다. – Rog