Я пытаюсь объединить все мои функции определенного класса в файле модели. Например, у меня будет функция fetchContactWithName: (NSString *) name в модели «Contact.h/Contact.m», которую впоследствии вызовет мой диспетчер представлений.Импортировать AppDelegate в модели?
В этом случае было бы плохой идеей импортировать файл AppDelegate.h в файл модели, поскольку мне нужно получить доступ к его управляемому объектуContext?
#import "AppDelegate.h"
@implementation Contact
...
+ (Contact *) fetchContactWithName:(NSString *) name {
AppDelegate *delegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Contact" inManagedObjectContext:delegate.managedObjectContext];
[fetchRequest setEntity:entity];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name == %@", name];
[fetchRequest setPredicate:predicate];
NSError *error = nil;
NSArray *fetchedObjects = [delegate.managedObjectContext executeFetchRequest:fetchRequest error:&error];
Contact *fetchedContact;
for(Contact *contact in fetchedObjects) {
fetchedContact = contact;
}
if(fetchedContact != nil) {
return fetchedContact;
} else {
return nil;
}
}
@end
Хороший ответ, но singleton - также плохая идея. – pbibergal
@pbibergal, Почему бы и нет? :) –
Синглтон - анти-шаблон. Это так же плохо, как и глобальное. – pbibergal