Как сказал @Nektarios, вы имеете дело с объектами здесь, поэтому вы хотите найти объект, который имеет определенное значение атрибута. Вы, что с запросом выборки и предикатом.
NSNumber *soughtPid=[NSNumber numberWithInt:53];
NSEntityDescription *productEntity=[NSEntityDescription entityForName:@"Product" inManagedObjectContext:context];
NSFetchRequest *fetch=[[NSFetchRequest alloc] init];
[fetch setEntity:productEntity];
NSPredicate *p=[NSPredicate predicateWithFormat:@"pid == %@", soughtPid];
[fetch setPredicate:p];
//... add sorts if you want them
NSError *fetchError;
NSArray *fetchedProducts=[self.moc executeFetchRequest:fetch error:&fetchError];
// handle error
Массив fetchedProducts
будет содержать все объекты сущности Product
, чей атрибут pid
равен soughtPid
. Обратите внимание, что предикат логически выполняет ту же функцию, что и предложение where
в SQL.
Когда у вас есть объекты, вы просто указываете контексту, чтобы удалить их:
for (NSManagedObject *product in fetchedProducts) {
[context deleteObject:product];
}
При следующем сохранении контекста данные объекта будут удалены из файла постоянного хранения.