Чтение онлайн

на главную - закладки

Жанры

iOS. Приемы программирования

Нахавандипур Вандад

Шрифт:

[self.window makeKeyAndVisible];

return YES;

}

В данном коде мы используем переменную счетчика внутри блока быстрого перебора. Причина, по которой в ходе этого быстрого перебора требуется счетчик, заключается в том, что на консоль выводятся отладочные сообщения NSLog, которые мы просматриваем, чтобы узнать для перечисляемого в данный момент объекта его индекс в массиве. Альтернативным вариантом решения было бы использование классического for-цикла с переменной счетчика.

Подробнее о запросах

выборки данных поговорим в подразделе «Обсуждение» данного раздела.

Обсуждение

Тем, кто знаком с терминологией баз данных, запрос выборки данных напомнит оператор SELECT. В операторе SELECT мы указываем, какие строки и при каких условиях должны быть возвращены из какой таблицы. Запрос выборки данных делает то же самое. Мы указываем сущность (таблицу) и контекст управляемых объектов (уровень базы данных). Кроме того, можем задавать дескрипторы сортировки для данных, которые мы считываем. Но сначала поговорим о том, как упростить сам процесс считывания данных.

Чтобы считать сущность Person (эту сущность мы создали в разделе 16.1 и превратили ее в код в разделе 16.2), мы сначала приказываем классу NSEntityDescription произвести в нашем контексте управляемых объектов поиск сущности под названием Person. Как только она будет найдена, сообщим запросу выборки данных, что требуется считать информацию из этой сущности. После этого нам останется всего лишь выполнить запрос выборки данных, как было показано в подразделе «Решение» данного раздела.

Метод экземпляра executeFetchRequest: error:, относящийся к классу NSManagedObjectContext, может иметь в качестве возвращаемого значения либо nil (в случае ошибки), либо массив управляемых объектов Person. Если по заданной сущности не найдено никаких результатов, то возвращенный массив будет пустым.

См. также

Разделы 16.1 и 16.2.

16.5. Удаление данных из Core Data

Постановка задачи

Требуется удалить управляемый объект (строку таблицы) из контекста управляемых объектов (вашей базы данных).

Решение

Воспользуйтесь методом экземпляра deleteObject:, относящимся к классу NSManagedObjectContext:

— (BOOL) application:(UIApplication *)application

didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

[self createNewPersonWithFirstName:@"Anthony"

lastName:@"Robbins"

age:51];

[self createNewPersonWithFirstName:@"Richard"

lastName:@"Branson"

age:61];

/* Сначала создаем запрос выборки данных. */

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];

NSError *requestError = nil;

/* Теперь
применим запрос выборки данных к контексту. */

NSArray *persons =

[self.managedObjectContext executeFetchRequest: fetchRequest

error:&requestError];

/* Убеждаемся, что получили массив. */

if ([persons count] > 0){

/* Удаляем последний контакт из массива. */

Person *lastPerson = [persons lastObject];

[self.managedObjectContext deleteObject: lastPerson];

NSError *savingError = nil;

if ([self.managedObjectContext save:&savingError]){

NSLog(@"Successfully deleted the last person in the array.");

} else {

NSLog(@"Failed to delete the last person in the array.");

}

} else {

NSLog(@"Could not find any Person entities in the context.");

}

self.window = [[UIWindow alloc] initWithFrame:

[[UIScreen mainScreen] bounds]];

self.window.backgroundColor = [UIColor whiteColor];

[self.window makeKeyAndVisible];

return YES;

}

В приведенном примере кода используется метод createNewPersonWithFirstName: lastName: age:, который мы написали в разделе 16.4.

Обсуждение

Можно удалять управляемые объекты (записи из таблицы базы данных) с помощью метода экземпляра deleteObject:, относящегося к классу NSManagedObjectContext.

Ни в одном из своих параметров этот метод не сообщает вам об ошибке, равно как и не возвращает значения BOOL. Таким образом, у вас нет надежного способа узнать, был ли объект успешно удален с помощью контекста управляемых объектов. Для получения этой информации лучше использовать метод isDeleted управляемого объекта.

С учетом данной информации изменим код, написанный ранее в этом разделе:

— (BOOL) application:(UIApplication *)application

didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

[self createNewPersonWithFirstName:@"Anthony"

lastName:@"Robbins"

age:51];

[self createNewPersonWithFirstName:@"Richard"

lastName:@"Branson"

Поделиться:
Популярные книги

Первый среди равных. Книга XII

Бор Жорж
12. Первый среди Равных
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Первый среди равных. Книга XII

Матабар IV

Клеванский Кирилл Сергеевич
4. Матабар
Фантастика:
фэнтези
5.00
рейтинг книги
Матабар IV

Дворянин

Злотников Роман Валерьевич
2. Император и трубочист
Фантастика:
боевая фантастика
альтернативная история
5.00
рейтинг книги
Дворянин

Неучтенный элемент. Том 11

NikL
11. Антимаг. Вне системы
Фантастика:
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 11

Страж Кодекса. Книга V

Романов Илья Николаевич
5. КО: Страж Кодекса
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Страж Кодекса. Книга V

1941, Великая Отечественная катастрофа: Итоги дискуссии

Коллектив авторов
Документальная литература:
военная документалистика
6.25
рейтинг книги
1941, Великая Отечественная катастрофа: Итоги дискуссии

Отморозок 3

Поповский Андрей Владимирович
3. Отморозок
Фантастика:
попаданцы
5.00
рейтинг книги
Отморозок 3

Наследие Маозари 8

Панежин Евгений
8. Наследие Маозари
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
постапокалипсис
рпг
фэнтези
эпическая фантастика
5.00
рейтинг книги
Наследие Маозари 8

Двойник короля 18

Скабер Артемий
18. Двойник Короля
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Двойник короля 18

Тринадцатый

Северский Андрей
Фантастика:
фэнтези
рпг
7.12
рейтинг книги
Тринадцатый

Московское золото и нежная попа комсомолки. Часть Пятая

Хренов Алексей
5. Летчик Леха
Фантастика:
попаданцы
5.00
рейтинг книги
Московское золото и нежная попа комсомолки. Часть Пятая

Последний реанорец. Том IV

Павлов Вел
3. Высшая Речь
Фантастика:
фэнтези
5.20
рейтинг книги
Последний реанорец. Том IV

Законы Рода. Том 8

Мельник Андрей
8. Граф Берестьев
Фантастика:
юмористическое фэнтези
аниме
фэнтези
5.00
рейтинг книги
Законы Рода. Том 8

Адвокат империи

Карелин Сергей Витальевич
1. Адвокат империи
Фантастика:
городское фэнтези
попаданцы
фэнтези
5.75
рейтинг книги
Адвокат империи