Ваш первый вопрос звучит так, как будто вы хотите получить объект, который уже находится в контексте с запросом на выборку, изменить некоторые значения объекта и затем вызвать метод -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-приложении.