2012-10-24 56 views
0

我試圖實現簡單的Core Data類來存儲和檢索從服務器下載的不同語言字符串(數組)。到目前爲止,我已經在App Delegate中創建了創建的Core Data模板,使用一個Entity「MyArray」和一個Attribute「language」創建了數據模型,並編寫了以下示例代碼以存儲和檢索這些數組。既然這兩個字符串數組存儲在相同的屬性「語言」中,我如何檢索中文語言數組?iOS核心數據:區分Transformable屬性中的多個對象

// Fetch arrays code 
NSManagedObjectContext *context = [self managedObjectContext]; 
NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"MyArray" inManagedObjectContext:context]; 
[request setEntity:entity]; 
NSArray *results = [context executeFetchRequest:request error:nil]; 

for (NSManagedObject *object in results) { 
    NSArray *a = [object valueForKey:@"language"]; 
    // Use array 
} 


-(void)storeEnglishStrings { 
    NSArray *array = [[NSArray alloc] initWithObjects:@"str1",@"str2", @"str3", @"str4", @"str5", nil]; 

    NSManagedObject *object = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context]; 
    [object setValue:array forKey:@"language"]; 

    NSError *error = nil; 
    if (![context save:&error]) { 
     NSLog(@"Unresolved error %@, %@", error, [error userInfo]); 
     abort(); 
    } 
} 

-(void)storeChineseStrings { 
    NSArray *array = [[NSArray alloc] initWithObjects:@"串1",@"串2", @"串3", @"串4", @"串5", nil]; 

    NSManagedObject *object = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context]; 
    [object setValue:array forKey:@"language"]; 

    NSError *error = nil; 
    if (![context save:&error]) { 
     NSLog(@"Unresolved error %@, %@", error, [error userInfo]); 
     abort(); 
    } 
} 

回答

0

查看Core Data programming guide。您需要使用NSFetchRequestpredicate作爲中文。您需要確保您可以識別哪一個是您正在保存的記錄的語言。我沒有看到你的實體的結構,但我確實看到你沒有保存語言。此外,你應該重新考慮你的模型。您通常不需要將NSArray保存到核心數據中。你可以,但通常意味着你的模型缺乏更好的設計。

+0

...所以我不能在對象的基礎上區分它們嗎?我懷疑Attribute如何存儲多個值!執行[object setValue:array forKey:@「language」];應該覆蓋之前的值。不應該嗎?它不斷追加的東西!我必須錯過一些基本概念。如果他們正在創建不同的對象,那麼他們必須有一些東西來區分它們。 – applefreak

+0

如果您需要存儲多個值,請嘗試創建一個新實體以及它們之間的一對多關係。查看我鏈接的文檔,以便更多地瞭解核心數據。 – J2theC

相關問題