我正在开发一个用于 Web 服务的 iOS 客户端,我从一个 Json API 获取数据,我解析并保存到 CoreData 中。我有一些重复,主要是我如何解析和保存对象。一个例子是一种创建用户的方法,它在两个控制器中几乎相同(将来可能会更多):
- (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”控制器类并在此处存储这样的方法,或者将其放入我的模型中。哪种方法是最好/正确的方法?