[英]saving fetched XMPPframeWork vCards into CoreData in Swift4
[英]CoreData fetched object becomes nil when tried to update in completion handler - Swift4
let bgContext = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType)
let moc = appDelegate.coreData.persistentContainer.viewContext
bgContext.parent = moc
bgContext.perform({
let fetchedResultController: NSFetchedResultsController<ReservationsEntity>
let request: NSFetchRequest<ReservationsEntity> = ReservationsEntity.fetchRequest()
let sort = NSSortDescriptor(key: #keyPath(ReservationsEntity.reservedDate), ascending: true)
request.sortDescriptors = [sort]
request.predicate = NSPredicate(format: "isSynced == %@", NSNumber(value: false))
fetchedResultController = NSFetchedResultsController(fetchRequest: request, managedObjectContext: moc, sectionNameKeyPath: nil, cacheName: nil)
do{
try fetchedResultController.performFetch()
for reservationEntity in fetchedResultController.fetchedObjects!{
print(reservationEntity.isSynced!)
let params = BaseViewController.getReservationDictionaryForOffline(reservation: reservationEntity)
ServerCalls.addReservationToServer(parametersForReservation: params, kindOfScreen: 0, completionHandler: { (response) in
print(reservationEntity.isSynced!)
reservationEntity.isSynced = true
})
}
} catch{
}
})
問題 :您好!我有一個用例說AddReservation
,我在其中將記錄添加到名為ReservationsEntity
CoreData Entity中,該記錄最初具有isSynced
為false
的屬性。 我也同時進行服務器調用,一旦服務器調用返回,我試圖將標志isSynced
更新為true
。 但是在服務器調用返回后,我的CoreData對象變為nil。
按照上面發布的代碼,調試器中的第一個print(reservationEntity.isSynced!)
顯示為false
。 當我嘗試打印/接入reservationEntity
后ServerCalls.addReservationToServer
回報,應用程序崩潰的reservationEntity
對象變為nil
。
在過去的幾天里,我一直在嘗試通過其他方法來修復它,但是沒有用。 我在這里做什么錯?
你可以試試這個代碼
let bgContext = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType)
bgContext.persistentStoreCoordinator = appDelegate.coreData.persistentContainer.persistentStoreCoordinator
並刪除
let moc = appDelegate.coreData.persistentContainer.viewContext
bgContext.parent = moc
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.