我試圖使用NSPredicate編輯核心數據條目中的條目,但我不完全確定它是如何工作的。使用NSPredicate覆蓋核心數據信息
我想從另一個對象得到一個基於ID的實體,但我看不到我要去哪裏錯了。這裏是我的數據模型: 實體:myEntity,屬性:name,id,value。
我試圖通過檢索該數據庫中的正確的對象:
NSEntityDescription *entity = [NSEntityDescription entityForName:@"myEntity" inManagedObjectContext:self.managedObjectContext];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:entity];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"id == %@", self.itemToEdit.ID];
[request setPredicate:predicate];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[request setSortDescriptors:sortDescriptors];
NSError *error;
MyEntity *myEntity = [[self.managedObjectContext executeFetchRequest:request error:&error] objectAtIndex: 0];
myEntity.value = self.itemToEdit.anotherValue;
[self.managedObjectContext save:&error];
無論出於何種原因,該數據沒有被保存,應用程序不會崩潰或者這使我相信問題與謂詞有關。無論如何,代碼有什麼問題?注意,itemToEdit不是myEntity類型,它是另一個對象,但賦值類型相同。
的問候,
邁克
您是否檢查過謂詞中的「id」是否正確?我看到你的'itemToEdit'對象上有一個大寫的'ID'屬性。另外,在調用'executeFetchRequest:error:'或'save:'時,檢查你的'error'對象是否有問題。 – colincameron
感謝您的回覆。兩者的錯誤均爲空。此外,再次檢查案件,這是正確的。 – Mackey18