2016-11-16 16 views
5

Tôi đang phát triển một ứng dụng bằng cách sử dụng dữ liệu cốt lõi trong ios. Và có rất nhiều thực thể và rất nhiều dữ liệu sẽ được lưu để đó là lý do tại sao tôi đang lưu dữ liệu trong luồng ngược lại bằng cách sử dụng phương pháp "ngữ cảnh riêng" và sử dụng các khối. Tất cả đều tốt với tất cả các thực thể, ngoại trừ một thực thể.Dữ liệu cốt lõi không lưu dữ liệu trong thực thể lần đầu tiên

Trong thực thể này dữ liệu không được lưu lần đầu tiên khi ứng dụng được khởi chạy và dữ liệu được đồng bộ hóa, nhưng sau đó, nếu tôi đồng bộ hóa dữ liệu, tất cả dữ liệu trong thực thể đó sẽ được lưu. Đây là mã của tôi để lưu dữ liệu:

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

Bạn đã cố gắng mà không thread cho thực thể cụ thể này? – Poles

+0

Có mà không có chủ đề, nó đang lưu dữ liệu trong đó. –

+0

Vui lòng chia sẻ với mã chuỗi. – Poles

Trả lời

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{} 
Các vấn đề liên quan