【发布时间】:2015-10-15 04:33:24
【问题描述】:
所以,它告诉我:
init()在 IOS 9.0 中已弃用:使用 -initWithConcurrencyType: 而是
var managedObjectContext = NSManagedObjectContext()
这是我的代码。也报错了,怎么改呢?
【问题讨论】:
所以,它告诉我:
init()在 IOS 9.0 中已弃用:使用 -initWithConcurrencyType: 而是
var managedObjectContext = NSManagedObjectContext()
这是我的代码。也报错了,怎么改呢?
【问题讨论】:
由于 iOS 9 NSManagedObjectContext() 已被弃用,因此建议使用 NSManagedObjectContext 创建一个 NSManagedObjectContext,如提示的那样,改为 -initWithConcurrencyType:。
在 iOS 9 中创建 NSManagedObjectContext 时的用法:
let managedObjectContext = NSManagedObjectContext(concurrencyType: .MainQueueConcurrencyType)
对于-initWithConcurrencyType:,我们需要指定一个并发类型。
上面的例子创建了一个.MainQueueConcurrencyType,这是可以指定的三个之一:
case ConfinementConcurrencyType
指定上下文将使用线程限制模式。
case PrivateQueueConcurrencyType
指定上下文将与私有调度队列相关联。
case MainQueueConcurrencyType
指定上下文将与主队列相关联。
使用已弃用的NSManagedObjectContext(),如果我没记错的话,默认类型是.ConfinementConcurrencyQueue。
如果您正在处理 UI 元素(即更新textLabel),请使用.MainQueueConcurrencyQueue。
【讨论】: