2012-11-30 50 views
0

我試圖使用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類型,它是另一個對象,但賦值類型相同。

的問候,
邁克

+1

您是否檢查過謂詞中的「id」是否正確?我看到你的'itemToEdit'對象上有一個大寫的'ID'屬性。另外,在調用'executeFetchRequest:error:'或'save:'時,檢查你的'error'對象是否有問題。 – colincameron

+0

感謝您的回覆。兩者的錯誤均爲空。此外,再次檢查案件,這是正確的。 – Mackey18

回答

0

結案的傢伙。我愚蠢的錯誤。我非常專注於使Core Data工作的這個新部分(我覺得這很令人生畏),我實際上忘記了指定self.itemToEdit.value。對不起,浪費你的時間。

Mike

+0

很高興它已修復。我只是重新鍵入整個方法,包括在任務之前和之後的nslogs。你可以標記你自己的答案是否正確。 (它可能仍然有助於某人調試自己的問題)。 – danh

+0

謝謝丹,抱歉浪費你的時間。 – Mackey18