Я пытаюсь разобраться с CoreData и наткнулся на MagicalRecord.
Совсем недавно я возился с разработкой objc/ios. Я привык иметь сервисный уровень, который обрабатывает выборку/создание модели. Я пытаюсь выяснить, что является лучшим подходом в ios.
Должен ли я обрабатывать свой уровень доступа к данным в модели, где он извлекает пользователя, или эта логика должна выполняться из контроллера?
// User.h
+ (User *)initWithUserId:(NSString *)userId; // AFNetworking fetches user and saves to core data
// Account.h
+ (Account *)initWithUsername:(NSString *)username andPassword:(NSString *)password
// Account.m
+ (Account *)initWithUsername:(NSString *)username andPassword:(NSString *)password
{
__block Account *account;
[[HTTPSessionManager sharedClient] POST:@"/authenticate" parameters:@{@"email":username,@"pw":password} success:^(NSURLSessionDataTask *task, id responseObject) {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)task.response;
NSString *authToken = [[httpResponse allHeaderFields] objectForKey:@"Auth-Token"];
account.password = password;
account.token = authToken;
account.user = [User initWithUserId:responseObject['_id']];
[[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait];
} failure:^(NSURLSessionDataTask *task, NSError *error) {
NSLog(@"Error: %@", error);
}];
return account;
}
// LoginViewController.m
- (void)signIn
{
NSString *username = self.usernameTextField.text;
NSString *password = self.passwordTextField.text;
Account *account = [Account initWithUsername:username andPassword:password];
if (account objectID) {
// sign in successful
}
}