2016-11-16 25 views
5

ios'taki çekirdek verileri kullanarak bir uygulama geliştiriyorum. Ve çok sayıda varlık var ve bir sürü veri saklanmalı, bu yüzden verileri "özel bağlam" yaklaşımı ve blokları kullanarak geri iş parçacığımda saklıyorum. Biri hariç tüm varlıklar ile her şey yolunda. Bu varlıkta, uygulama başlatıldığında ve veriler senkronize edildiğinde veriler ilk kez kaydedilmez, ancak bundan sonra, verileri tekrar senkronize edersem, bu varlıktaki tüm veriler kaydedilir.Temel Veriler, varlıkta ilk defa veri kaydetmiyor

let programAttendeeAssignArray:NSArray? = dict["data_assign"] as AnyObject? as? NSArray 
for var paAssignIndex = 0; paAssignIndex < programAttendeeAssignArray?.count; paAssignIndex++ { 
    let programAttendeeAssignObj:NSDictionary? = programAttendeeAssignArray?.objectAtIndex(paAssignIndex) as AnyObject? as? NSDictionary 
    if let paAssignDict = programAttendeeAssignObj as? [String: AnyObject] { 
     var keyString: String = "" 
     if let eID = paAssignDict["id"]! as? Int { 
      keyString = String(eID) 
     } 

     let paAssign: Conf_speakers = Utilities.sharedInstance.getOrCreateObjectOfEntityName("Conf_speakers", key: "id", identifier: keyString, localContext: privateContext) as! Conf_speakers 

     if let eeid = paAssignDict["id"]! as? Int { 
      paAssign.id = String(eeid) 
     } 

     if let attendee_id = paAssignDict["id1"]! as? Int { 
      paAssign.attendee_id = String(attendee_id) 
     } 

     if let agenda_id = paAssignDict["id2"]! as? Int { 
      paAssign.agenda_id = String(agenda_id) 
     } 

     if let updated_at = paAssignDict["id3"]! as? String { 
      paAssign.updated_at = updated_at 
     }      
    } 
} 

let error: NSErrorPointer = nil 
do { 
    try privateContext.save()      
} catch let error1 as NSError { 
    error.memory = error1 
} catch { 
    fatalError() 
} 

dispatch_async(dispatch_get_main_queue(), { 
    appDelegate.managedObjectContext.performBlock {() -> Void in 
     //var fds:Bool 
     do { 
      try 
      print("Result MSG: \(appDelegate.managedObjectContext.save())") 
      // fds = true 
     } catch _ { 
      //fds = false 
     } 
    } 
}) 
+0

Bu özel varlık için iplik olmadan denediniz: Burada verilerin kaydedilmesi için benim kodudur? – Poles

+0

Evet, iş parçacığı olmadan veriyi içine kaydediyor. –

+0

Lütfen iş parçacığı koduyla paylaşın. – Poles

cevap

0
let appDel : AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate 
    let context : NSManagedObjectContext = appDel.managedObjectContext 

    let request = NSFetchRequest(entityName: "TableName") 
    request.returnsObjectsAsFaults = false 
    do { 
     var results :NSArray 

     try results = context.executeFetchRequest(request) 
     if results.count == 0 
     { 

     } 
     else{ 

      let managedObject = results[0] 
      managedObject.setValue(text, forKey: "TableEntity") 
      //save data into table 
      try context.save() 


     } 
    } 
    catch{} 
İlgili konular