2016-04-11 13 views
0

İşte benim CoreData nesneCoreData Nesnesini Swift ile Nasıl Eklerim? Ben CoreData sunucudan myplaceworks eklemek istiyorum

private var user: [User]? 
private var myPlaceOfWorks: [MyPlaceOfWorks]? 
private var context = sharedManagedObjectContext() 

ve ben parametrenin bu işyeri zaten sınıf yapılır çalıştı. json

yılında

bu sınıf kontrolleri Array

func addInfo(workplace: [Sub_JsonModel_MyPlaceOfWorks], rtnvalue: String) -> 
(User?, MyPlaceOfWorks?) { 

    guard let newUser: User = 
NSEntityDescription.insertNewObjectForEntityForName("User", 
inManagedObjectContext: self.context) as? User else{ 
     return (nil, nil) 

    } 

    guard let newWorkPlace: MyPlaceOfWorks = 
NSEntityDescription.insertNewObjectForEntityForName("MyPlaceOfWorks", 
inManagedObjectContext: self.context) as? MyPlaceOfWorks else { 
     return (nil, nil) 
    } 

    newUser.rtnvalue = rtnvalue 

    for one in workplace { 

     newWorkPlace.activeyn = one.ActiveYN 
     newWorkPlace.basic = one.Basic 
     newWorkPlace.beacon = one.Beacon 
     newWorkPlace.cpiseq = one.CPISEQ 
     newWorkPlace.cpmpoweq = one.CPMPOWSEQ 
     newWorkPlace.companyname = one.CompanyName 
     newWorkPlace.etime = one.ETime 
     newWorkPlace.gps_latitude = one.GPS_latitude 
     newWorkPlace.gps_longitude = one.GPS_longitude 
     newWorkPlace.placename = one.PlaceName 
     newWorkPlace.stime = one.STime 
     newWorkPlace.wifi = one.Wifi 
     self.myPlaceOfWorks?.append(newWorkPlace) 
     print("newWorkPlace \(newWorkPlace)") 
     print("myPlaceOfWorks \(myPlaceOfWorks)") 
    } 

    self.saveContext { 
     //action 
     print("newUser:: \(newUser)") 

    } 
    return (newUser, newWorkPlace) 
} 

private func saveContext(completion: (() -> Void)?) { 
    do { 
     try self.context.save() 
     if let handler = completion { 
      NSOperationQueue.mainQueue().addOperationWithBlock({() -> Void in 
       handler() 
      }) 
     } 
    } catch let error { 
     print("can not save context \(error)") 
    } 
} 

Ben rtnvalue alabilirsiniz ama ben myPlaceOfWorks dizi nesne alamayan! Sadece sıfır Bunu nasıl deneyebilirim?

+0

'insertNewObjectForEntityForName' geçerli bir varlık daima olmayan bir isteğe bağlı nesnesi döndüren sağlayan' guard' ifadeler aslında değildir gerekli. – vadian

+0

'private var myPlaceOfWorks: [MyPlaceOfWorks]?' 'Nil 'satırını' self.myPlaceOfWorks? .append (newWorkPlace) 'den önce başlatmadıysanız verir – zcui93

+0

@vadian thank u :) –

cevap

2

MyPlaceOfWorks sınıfının yalnızca bir nesnesini oluşturdunuz ve ardından bu nesnenin döngüdeki özelliklerini yeniden yazdınız. Bunun yerine, her döngü yinelemesinde yeni örnek oluşturmanız gerekir.

for one in workplace { 
    if let newWorkPlace: MyPlaceOfWorks = NSEntityDescription.insertNewObjectForEntityForName("MyPlaceOfWorks", inManagedObjectContext: self.context) as? MyPlaceOfWorks { 
     newWorkPlace.activeyn = one.ActiveYN 
     newWorkPlace.basic = one.Basic 
     newWorkPlace.beacon = one.Beacon 
     newWorkPlace.cpiseq = one.CPISEQ 
     newWorkPlace.cpmpoweq = one.CPMPOWSEQ 
     newWorkPlace.companyname = one.CompanyName 
     newWorkPlace.etime = one.ETime 
     newWorkPlace.gps_latitude = one.GPS_latitude 
     newWorkPlace.gps_longitude = one.GPS_longitude 
     newWorkPlace.placename = one.PlaceName 
     newWorkPlace.stime = one.STime 
     newWorkPlace.wifi = one.Wifi 
     self.myPlaceOfWorks?.append(newWorkPlace) 
    } 
} 
self.saveContext { 
    //action 
    print("newUser:: \(newUser)") 

} 

Ve zcui93 yorum olarak bahsedilen gibi sen örneğini gerek senin myPlaceOfWorks değişken:

private var myPlaceOfWorks = [MyPlaceOfWorks]() 
+0

oh benim ... çok teşekkürler. Bu gerçekten ilk adım problemiydi ... :( –

İlgili konular