2016-09-01 5 views
0

私は、IOSの開発に新しいですからデータを取得し、特別にコアデータを使用しているとき、私は問題を抱えていますする方法I下記の関係を持って enter image description hereコアデータの関係、関係 <p></p>を使用するときに挿入し、関係

ご覧のように私は、ツリーのエンティティを持っていると私は何をしようとしていることは、食品がそのように、私は次のコード

を使用して挿入しようとしている特定のユーザー

によって消費されたときにCredentialsFoodエンティティにデータを挿入で

// adding to credetialsFood Entity 
NSManagedObjectContext *context1 = [appD managedObjectContext]; 
CredentialsFood *credentialsFood = (CredentialsFood *)  [NSEntityDescription insertNewObjectForEntityForName:@"CredentialsFood" inManagedObjectContext:context1]; 
NSDate *currentDate = [NSDate date]; 
credentialsFood.toFood.food_id = item_id; 
credentialsFood.toCred.email = @"123"; 
credentialsFood.date = currentDate; 


// here's where the actual save happens, 
if(![context1 save:&errorCoreData]){ 
    NSLog(@"Problem saving: %@",[error localizedDescription]); 
} 
else{ 
    NSLog(@"Food date Saved"); 
} 

コードを取得する際、私は= 123 Credentials.emailが、私は何も

を受けていないすべてのCredentialsFood.dateが、私は本当にこれは私が間違っているのかわからない取得例えば試すしかし罰金 の作品

NSManagedObjectContext *context2 = [appD managedObjectContext]; 

NSEntityDescription *foodEntity =[NSEntityDescription entityForName:@"Credentials" inManagedObjectContext:context2]; 

NSFetchRequest *request = [[NSFetchRequest alloc]init]; 

NSError *error2 = nil; 
NSString * userid [email protected]"123"; 

NSPredicate *foodPredicate = [NSPredicate predicateWithFormat:@"(email contains[cd] %@)",userid]; 

[request setEntity:foodEntity]; 
[request setPredicate:foodPredicate]; 

NSManagedObject *matches = nil; 
NSArray *objects = [context executeFetchRequest:request error:&error2]; 


if([objects count]== 0){ 
    NSLog (@"no matches found"); 

} 
else { 
    //NSLog(@"aasdasdad %@", objects); 
    matches = [objects objectAtIndex:0]; 
    NSLog(@"bb %@",[matches valueForKey:@"name"]); 
    NSLog(@"bb %@",[matches valueForKey:@"email"]); 
    NSLog(@"bb %@",[matches valueForKey:@"password"]); 
    //NSLog(@"hhhhhhhhhhhhhh %@",[matches valueForKey:@"credentails"]); 

    NSMutableSet *query = [matches mutableSetValueForKey:@"credentails"]; 


    NSArray *financialData =[matches valueForKeyPath:@"credentails"]; 
    NSLog(@"%@",financialData); 
    NSLog(@"%@",[financialData valueForKey:@"date"]); 

データを取得するためのコードは、しかし、私は知らないコアデータ内にあることが関係を実行している場合は、食品エンティティが移入され、CredentialsFoodも移入され

食べ物は何の子供たちに 抽象エンティティの資格を持っていません

私も警告を取得 抽象エンティティは、あなたが最初のオブジェクトを作成すると 抽象エンティティCredentialsFoodが子事前

答えて

1

感謝を持っていない子を持たない:

CredentialsFood *credentialsFood = (CredentialsFood *) [NSEntityDescription insertNewObjectForEntityForName:@"CredentialsFood" inManagedObjectContext:context1]; 
NSDate *currentDate = [NSDate date]; 
credentialsFood.toFood.food_id = item_id; 
credentialsFood.toCred.email = @"123"; 

...あなたはtoFoodまたはtoCred関係に何かを割り当てることが表示されません。関連オブジェクトは自動的に作成されないため、これらのプロパティはnilになります。 Objective-Cでは、これらのプロパティがnilの間はこのコードを実行するのはエラーではありませんが、コードは効果がありません。あなたが作成(またはフェッチ)FoodのとCredentialsのインスタンス、およびtoFoodtoCred属性にそれらの新しいオブジェクトを割り当てる必要があるように見えます。