0

アプリケーションに Core Data があります。エンティティの 1 つは ですDetailsDetailsには名前付きの 2 つの属性がguidあり、もう 1 つはdetailsです。どちらの属性にも多くの値が含まれています。フェッチの時点でdetails、対応する のを取得する必要がありguidます。GUID を使用して他の属性に保存された値を取得できますか? これら 2 つの属性をどのように関連付けることができますか? これは、2 つの属性に値を保存する方法です。

ReaderAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];

NSManagedObjectContext *context = [appDelegate managedObjectContext];

NSManagedObject *object;
object = [NSEntityDescription insertNewObjectForEntityForName:@"Details" inManagedObjectContext:context];

[object setValue: [[activity objectForKey:@"category_guid"]stringValue]forKey:@"guid"];
[object setValue:[activity objectForKey:@"details"] forKey:@"details"];

NSError *error;            
if (![context save:&error]) {

    NSLog(@"Error save base");
}
else {

    NSLog(@"saved");                
}
4

1 に答える 1

1

あなたの質問を理解しているかどうかはわかりませんが、にDetails基づいて特定のオブジェクトを選択したい場合は、次のようなguidを作成できます。NSFetchRequestNSPredicate

NSFetchRequest* request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"Details" inManagedObjectContext:moc]];
[request setPredicate:[NSPredicate predicateWithFormat:@"guid == %@", yourGuid]];

NSError *error = nil;
NSArray *results = [moc executeFetchRequest:request error:&error];
if([results count] > 0) {

    // the object you are looking for
    NSManagedObject* grabbedDetail = [results objectAtIndex:0];

    NSString* grabbedDetails = [grabbedDetail valueForKey:@"details"];

    // here you have grabbed details attribute
    // I suppose it's of type NSSString... 
}

// [request release]; if you don't use ARC

あなたの質問についてですが、これらの意味を説明していただけますか?

GUID を使用して他の属性に保存された値を取得できますか? これら 2 つの属性をどのように関連付けることができますか?

それが役立つことを願っています。

編集:

がゼロの場合results、最初に述語なしでオブジェクトを取得できます。したがって、次のようにします。

NSFetchRequest* request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"Details" inManagedObjectContext:moc]];

NSError *error = nil;
NSArray *results = [moc executeFetchRequest:request error:&error];
if([results count] > 0) {

    for(NSManagedObject* obj in results) {

        NSLog(@"obj -> %@", obj)
    }
}

// [request release]; if you don't use ARC

ログがない場合は、データがないことを意味します!! guid反対に、次のようなハードコードされた値で述語を設定します。

[request setPredicate:[NSPredicate predicateWithFormat:@"guid == %@", @"12345"]];

が存在することを確認する必要guidがあります。

何が問題なのかわかりませんが、使用したクエリは正しく、詳細がないと何が起こっているのか理解できません。

乾杯。

于 2012-09-28T08:18:45.080 に答える