2016-11-16 3 views
5

Я разрабатываю приложение, используя основные данные в ios. И существует множество объектов, и многие данные должны быть сохранены, поэтому поэтому я сохраняю данные в обратном потоке, используя подход «частного контекста» и используя блоки. Все нормально со всеми сущностями, кроме одного.Основные данные не сохраняют данные в сущности в первый раз

В этом объекте данные не сохраняются в первый раз при запуске приложения и синхронизация данных, но после этого, если я синхронизирую данные, все данные в этом объекте будут сохранены. Вот мой код для сохранения данных:

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

Вы пробовали без резьбы для этого конкретного лица? – Poles

+0

Да, без потока это сохраняет данные в нем. –

+0

Просьба поделиться с кодом темы. – Poles

ответ

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{}