2012-09-28 34 views
0

我的應用程序中有一個核心數據。其中一個實體是DetailsDetails有2個屬性,名稱爲​​,另一個是details。這兩個屬性都包含很多值。在提取點時,我必須採取相應的​​的details。我可以使用guid獲取保存在其他屬性中的值嗎?我怎樣才能連接這兩個屬性?這是我如何將值保存爲2個屬性。在覈心數據中使用ID獲取

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");     
} 

回答

1

我不知道我理解你的問題,但如果你想選擇一個基於​​特定Details對象,你可以用NSPredicate像下面創建一個NSFetchRequest

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獲取保存在其他屬性中的值嗎? 如何連接這兩個屬性?

希望有所幫助。

編輯:

如果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 

如果您沒有日誌,則表示您沒有數據!

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

你需要確保​​有:恰恰相反用硬編碼​​值等設定的謂語。

我不知道問題是什麼,但查詢我用它是正確的,沒有細節我不明白是怎麼回事。

乾杯。

+0

我剛剛嘗試,因爲你說。但[結果數量]變爲0 –

+0

提供有關您的模型的一些信息。 「guid」的類型是什麼? –

+0

如果查詢返回0,則表示沒有對象具有您指定的'guid'。首先嚐試使用硬編碼的'guid'(確保它存在)並查看會發生什麼。例如'[NSPredicate predicateWithFormat:@「guid ==%@」,@「12345」];' –