モデルフレームワークとしてマントルを使用しています。以下のようなモードがあります。
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 を使用して Season をデータベースに保存します。
[[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];
});
}];