@Votetoda

Как организовать Core data без tableview?

Добрый день!Появилась необходимость организовать сохранение и вывод переменной с помощью Core data,в интернете есть много примеров.Но они все используют tableview ,необходимо простое действие запись переменной и вывод переменной.Всем спасибо.
  • Вопрос задан
  • 2477 просмотров
Решения вопроса 1
Flanker_4
@Flanker_4
Понимаете в чем дело, CoreData Framework предназначен для хранения и управления графом объектов. Именно по этому везде используют UITableView. Он без заморочек позволяет отобразить иерархическую структуру, был бы стандартный контролл для рисования графов, юзали бы его. Ну так вот, Core Data не предназначен для хранения переменных - это как на самолете по сельской дороге кататься. Настоятельно рекомендую почитать хотя бы первые две главы https://developer.apple.com/library/mac/documentat... Для сохранения каких-то переменных лучше всего использовать NSUserDefault или же NSKeyedArchiver

На всякий случай, если Вы все же захотите что-то записать в CoreData , то смотрите на главы Creating and Deleting Managed Objects и Fetching Managed Objects. Ну и перед тем как писать "переменную", ее нужно будет представить в виде объекта...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Waka_Waka
@Waka_Waka
IOS Developer
Это очень просто сделать.
Первым делом нужно подключить Core Data в класс, в котором вы собираетесь что-либо реализовать с использованием Core Data.
Делается это так:
-(NSManagedObjectContext *)managedObjectContext{
    NSManagedObjectContext *context = nil;
    id delegate = [[UIApplication sharedApplication]delegate];
    if ([delegate performSelector:@selector(managedObjectContext)]) {
        context = [delegate managedObjectContext];
    }
    return context;
}

Мы используем тут класс AppDelegate, потому что Core Data инициализируется именно там.

Предположим, что у нас есть сущность "Human", в которой есть три поля: firstName, lastName и phoneNumber.

Запись этих данных в CoreData будет выглядеть так:
NSManagedObjectContext *context = [self managedObjectContext]; 
    Humans *newHuman = [NSEntityDescription insertNewObjectForEntityForName:@"Humans"
                                                     inManagedObjectContext:[self managedObjectContext]];
    if (newHuman != nil) {
        newHuman.firstName = self.firstNameField.text;
        newHuman.lasteName = self.lastNameField.text;
        newHuman.phoneNamber = self.phoneNumberField.text;
}

NSError *savingError = nil;

if (![context save:&savingError]) {
NSLog(@"Eroor");
}


Получение данных из CoreData будет выглядеть так:
NSManagedObjectContext *context = [self managedObjectContext];
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc]init]; 
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Humans" inManagedObjectContext:context]; 
    [fetchRequest setEntity:entity];
    
    NSMutableArray *array = [context executeFetchRequest:fetchRequest error:nil]; //Массив можно определить и в другом месте

NSManagedObject *newCell = [self.array objectAtIndex:0]; //Тут надо указать какой-либо индекс (обычно в tableview используется indexPatch.row). Можно так же быстрым перебором получить все.

//И записываем в переменные
NSString *name = [newCell valueForKey:@"firstName"];
NSString *lastName = [newCell valueForKey:@"lasteName"];
NSString *phoneNum = [newCell valueForKey:@"phoneNamber"];


Вот так все просто))
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы