2016-08-18 4 views
1

모델 프레임 워크로 Mantle을 사용하고 있습니다. 당신이 시즌 많은 에피소드를 볼 수있는YapDatabase를 사용하여 데이터베이스 레코드를 업데이트하는 방법

Season.h 
@interface Season : MTLModel <MTLJSONSerializing> 

@property (nonatomic, copy) NSNumber *seasonID; 
@property (nonatomic, strong) NSArray *episodes; 

Season.m 
+ (NSDictionary *)JSONKeyPathsByPropertyKey { 
    return @{ 
      @"seasonID": @"id", 
      @"episodes": @"episodes" 
      }; 
} 

Episode.h 

@interface Episode : MTLModel <MTLJSONSerializing> 

@property (nonatomic, copy) NSNumber *watched; 

: 나는 모드를 아래와 같이 있습니다. 그래서 YapDatabase 사용하여 데이터베이스에 시즌을 저장

[[DatabaseUtility sharedUtility].database.newConnection asyncReadWriteWithBlock:^(YapDatabaseReadWriteTransaction * _Nonnull transaction) { 
      [transaction setObject:season forKey:season.seasonID.stringValue inCollection:kSeason]; 
     } completionBlock:^{ 

     }]; 

상황은 내가 에피소드의 감시 값을 업데이트 할 수 있습니다. 그래서 아래에서 작동합니까?

[[DatabaseUtility sharedUtility].database.newConnection asyncReadWriteWithBlock:^(YapDatabaseReadWriteTransaction * _Nonnull transaction) { 
      [transaction setObject:episode forKey:episode.episodeID.stringValue inCollection:kEpisode]; 
     } completionBlock:^{ 
      dispatch_async(dispatch_get_main_queue(), ^{ 
       [self.navigationController dismissViewControllerAnimated:YES completion:nil]; 
      }); 
     }]; 

답변

0

먼저 완료 블록에서 값을 읽을 수 있습니다. 그리고 업데이트되었는지 확인하십시오. 또한 YapDatabase가 주 스레드에서 완료 블록을 실행하는 생각, 그래서 당신은 dispatch_async 당신 setObject이 거래의 새로운 객체가 업데이트됩니다

(이 정보를 다시 한 번 확인해야 할) 필요가 없습니다!

모든 변경 사항을 관찰하는 데 도움이되는 몇 가지 훌륭한 메커니즘이 있습니다. 나는 Views, Mappings and Long-live transactions에 대해 이야기하고있다.