2016-01-25 39 views
6

Stworzyłem model danych tak:zapisywanie, usuwanie i pobieranie danych z jednego do wielu podstawowych danych relacji

Mam ten kod do wniosku zwrcania:

func roundFetchRequest() -> NSFetchRequest { 
    let fetchRequest = NSFetchRequest(entityName: "Customer") 
    print("Check here: \(myRoundIndexPath)") 
    //let predicate : NSPredicate = NSPredicate(format: "custRoundRel = %@", frc2.objectAtIndexPath(myRoundIndexPath!) as! RoundName) //ASSUME THIS IS CORRECT 
    let sortDescriptor = NSSortDescriptor(key: "c2fna", ascending: true) 
    //fetchRequest.predicate = predicate 
    fetchRequest.sortDescriptors = [sortDescriptor] 
    return fetchRequest 
} 

Moje wykomentowane kod nie daje błędu, ale nie mogę zapisać klienta do instancji RoundName. Kiedy zapisuję klienta z jego atrybutami, użyłem tego kodu:

func newCust() { 
    let cont = self.context 
    let newCustomer = NSEntityDescription.entityForName("Customer", inManagedObjectContext: cont) 
    let aCust = Customer(entity: newCustomer!, insertIntoManagedObjectContext: cont) 

    aCust.c2fna = firstName.text 
    aCust.c3lna = lastName.text 
    aCust.c4tel = tel.text 
    aCust.c5mob = mob.text 
    aCust.c6ema = email.text 
    aCust.c7hsn = houseNo.text 
    aCust.c8fir = street.text 
    aCust.c9sec = secondLine.text 
    aCust.c10ar = area.text 
    aCust.c11pc = postcode.text 
    aCust.c12cos = cost.text 
    aCust.c13fq = frequencyNumber.text 
    aCust.c14fqt = frequencyType.text 
    let DF = NSDateFormatter() 
    aCust.c15das = DF.dateFromString(startDate.text!) 
    //Do Pics in a minute & next date in a minute 
    aCust.c17notes = notes.text 

    //print("Desc = \(picRound.image?.description)") 

    do { 
     try context.save() 
     print("Save Successful") 
    } catch { 
     print("Save Unsuccessful") 
    } 
} 

Jaki jest kod łączący tego klienta z właściwą Rundą?

Dzięki, jestem bardzo nowy w podstawowych danych i naprawdę doceniam każdą pomoc.

Odpowiedz

1

Tak, można użyć predykatu na żądanie pobierania, w formacie jak

NSPredicate(format:"custRoundRel = %@", xxxx) 

gdzie xxxx jest instancja Round.

Możesz także po prostu użyć relacji roundCustRel w zależności od tego, co chcesz zrobić z instancjami Customer i ile ich jest.

+0

Dzięki @Wain, więc kiedy zapisuję jednostkę klienta z jej odpowiednimi atrybutami, w jaki sposób mogę powiązać ją z prawidłową nazwą rundy? – agf119105

+0

musisz mieć instancję "Round", już albo pobrać ją po nazwie, a następnie ustawić dla relacji: 'yyyy.custRoundRel = xxxx' (gdzie' yyyy' jest twoją nową instancją 'Customer' – Wain

-1

Obiekty można tworzyć w taki sam sposób, jak inne zarządzane obiekty. Aby połączyć klienta z właściwym obiektem Round, wystarczy ustawić relację jeden do jednego (Core Data automatycznie ustawi dla ciebie odwrotną relację).

newCustomer.round = round 
// or, with your arcane attribute names 
newCustomer.custRoundRel = theDesiredRoundObject 

Aby dotrzeć do klientów jednej konkretnej rundzie, nie trzeba pobierać wnioski lub predykatów.

round.customers 
// or, with your arcane attribute names 
round.roundCustRel