2017-08-10 2 views
0

Ich verwende coredata Beziehungen zum ersten Mal. Ich habe zwei Entitäten Schule und Buchen diese Attribute haben folgende Attribute. Schule: ID, Benutzer-ID, Berechtigung Buch: ID, Name, Beschreibung, Dauer, Stunde. Es gibt eins zu viele Beziehung zwischen Schule und Book.My Ziel ist es, Daten mit Beziehung von Buch basiert School.Userid und ich bin in der Lage, es bis jetzt zu erreichen.Folgen ist der Code, den ich zum Speichern und Abrufen verwenden.Verwenden von Schleifen zum Füllen der SQLite-Datenbank von coredata

- (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]; 
} 

Jetzt will ich Coredata automatisch füllen, ohne dass über die Schnittstelle gehen sparen mit loops.I der Lage ist, auf Schleifen zu arbeiten, bis Schule zu füllen. Aber, ich bin nicht in der Lage, Buch Tabelle mit Schleife entsprechend bestimmten Benutzer-ID zu füllen.Bitte führen Sie, wie dies erreicht werden kann.Any Hilfe und Vorschlag würde geschätzt werden. Vielen Dank im Voraus.

+0

Bitte zeigen Sie den Code für die Schleife, die Sie verwenden befüllen IDUSUNP – 3stud1ant3

+0

@ user1000, hinzugefügt .. freundlich prüfen und helfen. – Prez

+0

Bitte überprüfen Sie die Antwort, wenn Sie Probleme haben Fragen Sie in den Kommentaren – 3stud1ant3

Antwort

0

bitte die for-Schleife in jeder if-Anweisung hinzufügen, und stellen Sie die Werte Ihrer Wahl

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"]; 

       } 




     } 

Hinweis: Wenn dies eine inverse von der Schule in eine zu viele Beziehung wouni (ein Objekt der Schule ist im Zusammenhang mit vielen Objekten von wounis) dann müssen Sie nicht wounis zurück in der Schule hinzufügen müssen, weil Coredata Pflege der inversen Beziehung nehmen

Schließlich denke ich Ihnen nicht in jedem, wenn die Bedingung die folgende Anweisung benötigen,

if (![context save:&error]) { 
      NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]); 

    } 

nur schreiben Sie es einmal am Ende der Funktion

Für Prädikat Teil, ich glaube, Sie Prädikat wie folgt hinzufügen sollte:

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

@Prez bitte zeigen Sie den Code, den Sie geschrieben haben – 3stud1ant3

+0

Hinzugefügt den Code, den ich jetzt verwende, bitte überprüfen . – Prez

+0

@Prez überprüfen Sie bitte die aktualisierte Antwort, ich habe das Prädikat Teil hinzugefügt, löst dies Ihr Problem? – 3stud1ant3

Verwandte Themen