0

サーバーからダウンロードしたさまざまな言語文字列 (配列) を格納および取得するための単純な Core Data クラスを実装しようとしています。ここまでで、App Delegate で Core Data テンプレートを作成し、1 つのエンティティ "MyArray" と 1 つの属性 "language" を持つデータ モデルを作成し、これらの配列を格納および取得する次のサンプル コードを記述しました。両方の文字列配列が同じ属性「言語」に格納されているため、中国語配列を取得するにはどうすればよいですか?

// 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();
    }
}
4

1 に答える 1

0

CoreDataプログラミングガイドをご覧ください。中国語の述語でNSFe​​tchRequest を使用する必要があります。保存しているレコードの言語がどれであるかを識別できることを確認する必要があります。あなたの実体の構造はわかりませんが、あなたが言語を保存していないことはわかります。また、モデルを再検討する必要があります。通常、NSArrayをコアデータに保存する必要はありません。可能ですが、それは通常、モデルに優れたデザインが欠けていることを意味します。

于 2012-10-24T14:40:22.993 に答える