2017-08-10 5 views
0

私はコアデータ関係を初めて使用しています。私は2つのエンティティを持っています。 学校:id、userid、permission 予約:ID、名前、説明、所要時間、時間。 学校とBookの間には1対多の関係があります。私の目標はBookベースのSchool.useridの関係を使ってデータを取得することです。これまで達成することができました。私は保存してフェッチするためにコードを使用しています。今ループを使用してコアデータのsqliteデータベースを埋める

- (IBAction)save:(id)sender { 
    NSManagedObjectContext *context = [self managedObjectContext]; 

    NSManagedObject *School = [NSEntityDescription insertNewObjectForEntityForName:@"School" inManagedObjectContext:context]; 
    [School setValue:self.idTextField.text forKey:@"id"]; 
    [School setValue:self.userIdTextField.text forKey:@"userid"]; 
    [School setValue:self.permissionTextField.text forKey:@"permission"]; 

    NSManagedObject *Book = [NSEntityDescription insertNewObjectForEntityForName:@"Book" inManagedObjectContext:context]; 
    [Book setValue:self.Id.text forKey:@"id"]; 
    [Book setValue:self.nameTextField.text forKey:@"name"]; 
    [Book setValue:self.descriptionTextField.text forKey:@"discription"]; 
    [Book setValue:self.hoursTextField.text forKey:@"hours"]; 
    [Book setValue:self.durationTextField.text forKey:@"duration"]; 
    [Book setValue:School forKey:@"School"]; 



    [School mutableSetValueForKey:@"Book"]; 

    NSError *error = nil; 
    // Save the object to persistent store 
    if (![context save:&error]) { 
     NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]); 
    } 

    [self dismissViewControllerAnimated:YES completion:nil]; 
} 

、私は学校を埋めるまでのループ上で動作することができる午前loops.Iを使用して保存するためのインターフェイスを経由せずに自動的にcoredataを移入します。しかし、私は特定のユーザーIDに腐食ループを使用してブックテーブルを埋めることができません。どのようにこれを達成することができますガイドをお手伝いしてください。助けや提案をいただければ幸いです。

+0

あなたが使用していることをループのコードを表示してくださいIDUSUNP – 3stud1ant3

+0

@ user1000を追加して追加してください。 – Prez

+0

あなたが問題に直面した場合は、ご質問にお答えください – 3stud1ant3

答えて

0

if文ごとにループのために追加して、お好みの値を設定してください

if(i>0 &&i<=100) 
      { 
       [School setValue:@"Apple" forKey:@"userid"]; 

       for(int j = 0; j < 10; j++) { 
        NSManagedObject *Book= [NSEntityDescription insertNewObjectForEntityForName:@"Book" inManagedObjectContext:context]; 
        [Book setValue:[NSString stringWithFormat:@"%i", j + 10] forKey:@"id"]; 
        [Book setValue:[NSString stringWithFormat:@"Name: %i", j] forKey:@"name"]; 
        [Book setValue:[NSString stringWithFormat:@"%i", j] forKey:@"hours"]; 

        [Book setValue:School forKey:@"School"]; 

       } 



      } 
else if(i>100 && i<=200){ 
      [School setValue:@"iPhone" forKey:@"userid"]; 
      for(int j = 10; j < 20; j++) { 
        NSManagedObject *wouni = [NSEntityDescription insertNewObjectForEntityForName:@"Book" inManagedObjectContext:context]; 
        [Book setValue:[NSString stringWithFormat:@"%i", j + 10] forKey:@"id"]; 
        [Book setValue:[NSString stringWithFormat:@"Name: %i", j] forKey:@"name"]; 
        [Book setValue:[NSString stringWithFormat:@"%i", j] forKey:@"hours"]; 


        [Book setValue:School forKey:@"School"]; 

       } 




     } 

注:これはwouniために学校から多くの関係とは逆のものである場合は(学校の目的の一つは、 wounisの多くのオブジェクト)に関連付けられている あなたはCoreDataは逆関係

最後の世話をしますので、私はあなたが、

すべての場合の状態で次のステートメントを必要といけないと思いますが、学校に戻ってwounisを追加する必要がいけません
if (![context save:&error]) { 
      NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]); 

    } 

だけ述語部分について機能

の終わりに一度それを書く、私はあなたがこのように述語を追加すべきだと思う:

[r setPredicate:[NSPredicate predicateWithFormat:@"SELF.userid = %@",userid]]; 
+0

@Prezあなたが書いたコードを表示してください – 3stud1ant3

+0

私は今使用しているコードを追加してください。 – Prez

+0

@Prez更新された答えを確認してください、私は述部を追加しました。これはあなたの問題を解決しますか? – 3stud1ant3

関連する問題