2011-08-07 2 views
7

다음 JSON에 대한 관계를 CoreData 백업 모델에 매핑하려고합니다. 내가 RestKit의 OM2 클래스와 매핑 한RestKit과 중첩 된 다 대다 관계

{ 
    "photos": [ 
     { 
      "id": 1, 
      "thumb": "http://localhost/test_1_thumb.png", 
      "image": "http://localhost/test_1.png", 
      "date": "2011-07-02T06:06:16Z", 
      "likes": 0, 
      "user": { 
       "id": 1, 
       "username": "User1", 
       "avatar": "http://cdn.domain.com/avatar.jpg" 
      }, 
      "comments": [ 
       { 
        "date": "2011-07-02T06:06:16Z", 
        "text": "This is the only comment", 
        "id": 1, 
        "author": { 
         "username": "User1", 
         "id": 1, 
         "avatar": "http://cdn.domain.com/avatar.jpg" 
        } 
       } 
      ] 
     } 
    ] 
} 

내 CoreData 모델 :

다음은 JSON입니다.

CoreData Entities

사진 클래스입니다. 나는이 오류와 함께, 사진의 comments 속성을 제외한 모든 액세스 할 수있어이와

// Map relationships between entities. 
[commentMapping mapKeyPath:@"author" toRelationship:@"author" withMapping:userMapping]; 
[photoMapping mapKeyPath:@"user" toRelationship:@"owner" withMapping:userMapping]; 
[photoMapping mapKeyPath:@"comments" toRelationship:@"comments" withMapping:commentMapping]; 

:

@interface Photo : NSManagedObject 

@property (nonatomic, retain) NSString * thumbnailUrl; 
@property (nonatomic, retain) NSString * imageUrl; 
@property (nonatomic, retain) NSDate * date; 
@property (nonatomic, retain) NSNumber * likes; 
@property (nonatomic, retain) NSNumber * photoID; 
@property (nonatomic, retain) User *owner; 
@property (nonatomic, retain) NSSet *comments; 

@end 

@interface Photo (CoreDataGeneratedAccessors) 

- (void)addCommentsObject:(Comment *)value; 
- (void)removeCommentsObject:(Comment *)value; 
- (void)addComments:(NSSet *)values; 
- (void)removeComments:(NSSet *)values; 

@end 

@implementation Photo 

@dynamic thumbnailUrl; 
@dynamic imageUrl; 
@dynamic date; 
@dynamic likes; 
@dynamic photoID; 
@dynamic owner; 
@dynamic comments; 

@end 

은 지금은에 완전히 확실하지 않다 부분은 관계입니다 Comments = Relationship 'comments' fault on managed object . 이 느낌은 NSS로 정의 된 comments이있는 사진 모델과 관련이 있거나 관계 매핑에 문제가있는 것 같지만 확실하지 않습니다.

답변

7

그래서 문제가 RestKit 또는 매핑하지만 어떻게 CoreData 기능에 대한 이해와는 아무 상관 없다고 밝혀 체크 아웃.

- (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObjects:(NSArray*)objects { 
    NSLog(@"Loaded photos: %@", objects); 

    for (id object in objects) { 
     Photo *photo = object; 
     // Print other photo attributes... 

     NSLog(@"Comments = %@", photo.comments); 
    } 
} 

문제는 직접 컬렉션 개체를 인쇄하려고이었다 다음과 같이

나는 나의 위양에 매핑 된 JSON 개체에 액세스했습니다. CoreData는 데이터 저장소의 오류를 발생시키지 않습니다. 단순히 다음과 같이 빠른 반복으로 바꾸고 속성에 액세스하면 comments 객체에 액세스 할 수있었습니다.

for (Photo *photo in objects) { 
    for (Comment *comment in photo.comments) NSLog(@"Comment = %@", comment.text); 
} 
+0

당신이 나를 구해 줬어, 고마워! –