![](/img/trans.png)
[英]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.