【发布时间】:2015-04-09 14:09:39
【问题描述】:
Core Data ManagedObjectContext -lock 方法在 iOS 8 中已弃用。但是,直到今天,我已经能够编写以下代码来删除我的 Core Data Stack,而不会发出任何警告:
// Delete Core Data stack
if let PSC = managedObjectContext.persistentStoreCoordinator {
if let PS = PSC.persistentStores.first as? NSPersistentStore {
let storeURL = PSC.URLForPersistentStore(PS)
managedObjectContext.lock()
managedObjectContext.reset()
var error: NSError?
if !PSC.removePersistentStore(PS, error: &error) {
println("Unresolved error \(error), \(error!.userInfo)")
abort()
}
if !NSFileManager.defaultManager().removeItemAtURL(storeURL, error: &error) {
println("Unresolved error \(error), \(error!.userInfo)")
abort()
}
if PSC.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: storeURL, options: nil, error: &error) == nil {
println("Unresolved error \(error), \(error!.userInfo)")
abort()
}
managedObjectContext.unlock()
}
}
使用 Xcode 6.3 和 Swift 1.2,我现在收到带有以下行的警告:
self.managedObjectContext.lock()
self.managedObjectContext.unlock()
'lock()' 在 iOS 8.0 版中已弃用:使用队列样式上下文 和 -performBlockAndWait: 代替
如何在不使用-lock方法的情况下重写之前的代码?我只是看不出-performBlockAndWait: 是如何替换它的。
【问题讨论】:
标签: swift core-data ios8 nsmanagedobjectcontext