我對iOS/Cocoa相當陌生,我對核心數據有一個非常基本的問題。我正在通過互聯網尋找合適的答案/解決方案,但我無法做到。iOS核心數據唯一對象獲取
所以問題是你如何處理核心數據的唯一性?我知道核心數據不是數據庫,它就像一個對象圖。讓我們假設我們有一個名爲'User'的實體,它具有屬性'id'和'name'以及與其他實體的幾個關係。現在我們要更新特定用戶的名稱(例如,Web服務爲我們提供了id和新名稱)。
這是我已經做到了以前的樣子:我聽說
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"User" inManagedObjectContext:context]];
[request setPredicate:[NSPredicate predicateWithFormat:@"id == %@", anId]];
NSError *error = nil;
NSArray *results = [context executeFetchRequest:request error:&error];
User *user = [results lastObject];
但比這是不好的做法。是否因爲使用謂詞獲取請求非常慢?我無法想象這是如此重要。據我所知,沒有其他方法來獲得一個獨特的對象,而不是檢查每個對象,並檢查相等性。
如果要獲取實體的所有對象,將它們放入數組並將它們放入數組中手動循環(而不是獲取請求)?
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"User" inManagedObjectContext:context]];
NSError *error = nil;
NSArray *results = [context executeFetchRequest:request error:&error];
User *resultUser;
for(User *user in results){
if([user.id isEqual:anId]) resultUser = user;
}
請幫我找到正確的道路和感謝。