2012-10-24 57 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

相关问题