All streams
Search
Write a publication
Pull to refresh
7
0

Пользователь

Send message
Мое сообщение было адресовано Олегу, с Вашим мнением я полностью солидарен.
Бред. Когда будете работать с нормальным объемом данных, расскажете про кордату, особенно про скорость работы на старых девайсах.
Теперь я умею писать в консоль и вязать IBOutlet'ы, ух!
Искренне рад за Вас, а у меня сон нарушен, если в проекте, даже задеплоенном, имеются недостатки, которые я в состоянии исправить, опять же руководствуясь чувством меры.
Вы любите свою работу только за то, что способны ее выполнить?
Вы правы, но абсолютно везде нужно чувство меры.
Спасибо, но это был сарказм. Видимо, нужно было тегом пометить, либо шутить смешнее.
Спасибо за статью.

P.S. NSManagedObjectContact — опечатка.
Не нужно обращаться к какому-то конкретному контексту внутри CoreDataManager, пользователь этого мини-фреймворка должен сам решить какой контекст для запроса ему использовать.

Можно написать в CoreDataManager небольшой хэлпер:

- (NSManagedObjectContext*)getCurrentThreadContext{
    NSManagedObjectContext *result = nil;
    
    if ([NSThread isMainThread])
        result = _defaultManagedObjectContext;
    else
        result = [self getContextForBGTask];
    
    return result;
}


И метод для фетча:

- (NSArray*)getObjectsOfType:(NSString*)type
         withSortDescriptors:(NSArray*)descriptors
                andPredicate:(NSPredicate*)predicate
                   inContext:(NSManagedObjectContext *)context {
    NSFetchRequest* request = [[NSFetchRequest alloc] init];
    [request setReturnsObjectsAsFaults:NO];
    
    NSEntityDescription* desc = [NSEntityDescription entityForName:type inManagedObjectContext:context];
    [request setEntity:desc];
    
    if (descriptors)
		[request setSortDescriptors:descriptors];
    
    if (predicate)
		[request setPredicate:predicate];
    
    NSError* error = nil;
    NSArray* result = nil;
    result = [context executeFetchRequest:request error:&error];
    
	if ((result == nil) || (error != nil))
		return nil;
    
	return result;
}


Тогда вызов из любого участка кода будет сводиться к следующему:

NSManagedObjectContext *context = [[CoreDataManager sharedManager] getCurrentThreadContext];
NSArray *result = [[CoreDataManager sharedManager] getObjectsOfType:@"Car"
                                         withSortDescriptors:nil
                                                andPredicate:nil
                                                   inContext:context]
Статья очень походит на выборочно скопипащенные доклады некоторых нерадивых студентов -)
Дмитрий, спасибо Вам огромное за игры детства, и за эту прекрасную статью, читал на одном дыхании.
Много улыбался, пока читал, пару раз даже хохотнул. В конце статьи был очень растерян. Автор либо великолепный тролль, либо, извините меня, дурак.
Вы уверены, что в Вашем случае оправдано в качестве модели использовать NSManagedObject вместо NSObject?
Если элементов настолько много, что начинает тормозить UI на удалении, то проще на выходе уходить в другой поток, брать с него контекст, фетчить ненужные объекты и удалять их.
Забыл отметить, спасибо, добавил.

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity