Редактировать объект в основных данных - PullRequest
0 голосов
/ 25 апреля 2011

Существует ли метод, аналогичный insertNewObjectForEntityName, который редактирует текущую сущность, передаваемую в контексте управляемого объекта? Я не хочу создавать другую дублирующую сущность.

Кроме того, я не хочу, чтобы пользователи могли вводить два объекта с одинаковыми атрибутами (один атрибут, заголовок события). Как сделать так, чтобы при попытке добавить новую сущность с идентичным атрибутом заголовка всплыло предупреждение?

1 Ответ

1 голос
/ 25 апреля 2011

Ваш первый вопрос звучит так, как будто вы хотите получить объект, который уже находится в контексте с запросом на выборку, изменить некоторые значения объекта и затем вызвать метод -save в вашем контексте.

Что касается второй части, то, что бы вы сделали, - это когда пользователь пытается добавить элемент, поиск контекста для объекта с таким же названием, если элемент существует, всплывающее предупреждение.


Редактировать : вот код из моего приложения (немного отредактированный), в котором я установил и выполнил запрос на выборку:

NSFetchRequest *categoryRequest = [[NSFetchRequest alloc] init];
[categoryRequest setEntity:[NSEntityDescription entityForName:@"Category" inManagedObjectContext:[self managedObjectContext]]];
NSString *categoryName = @"Cooking";
NSPredicate *categoryNameMatchesPredicate = [NSPredicate predicateWithFormat:@"name MATCHES %@", categoryName];
[categoryRequest setPredicate:categoryNameMatchesPredicate];
NSError *error = nil;
NSArray *categoryArray = [[self managedObjectContext] executeFetchRequest:categoryRequest error:&error];

После этого запроса массив categoryArray содержит все объекты категории с именем «Cooking». Если нет объектов с именем «Cooking», массив будет пустым.

Вероятно, быстрее использовать -countForFetchRequest: error: и проверять ненулевое число до того, как вы фактически выполните запрос на выборку, но я не уверен, что это имеет большое значение в небольшом iOS-приложении.

...