私は Web サービス用の iOS クライアントで作業しています。Json API からデータを取得し、それを解析して CoreData に保存します。主にオブジェクトを解析して保存する方法に重複があります。1つの例は、2つのコントローラーでほぼ同じユーザーを作成する方法です(おそらく将来的には増えるでしょう):
- (User *)createUserFromDict:(NSDictionary *)dictionary
{
User *user;
NSNumberFormatter *numberFormatter= [[NSNumberFormatter alloc] init];
NSNumber * userId = [numberFormatter numberFromString:(NSString *)[dictionary valueForKey:@"id"]];
NSEntityDescription *userDescription = [NSEntityDescription entityForName:@"User" inManagedObjectContext:[appController managedObjectContext]];
NSEntityDescription *imageDescription = [NSEntityDescription entityForName:@"Image" inManagedObjectContext:[appController managedObjectContext]];
user = [[User alloc] initWithEntity:userDescription insertIntoManagedObjectContext:[appController managedObjectContext]];
user.name = [dictionary valueForKey:@"name"];
[...]
Image *userAvatrar = [[Image alloc] initWithEntity:imageDescription insertIntoManagedObjectContext:[appController managedObjectContext]];
userAvatrar.url = [dictionary valueForKeyPath:@"avatar_image.url"];
[...]
NSError *error;
[[appController managedObjectContext] save:&error];
return user;
}
この複製が必要なのか、それともより良い方法があるのか はわかりません。「cacheManager」コントローラー クラスを作成し、このようなメソッドをここに格納するか、モデルに配置することを考えています。それを行うための最良/正しい方法はどれですか?