Swift - 'init()' 在 iOS 9.0 中被弃用:改为使用 -initWithConcurrencyType:
Swift - 'init()' was deprecated in iOS 9.0: Use -initWithConcurrencyType: instead
我的在线模型出现错误(黄色警告):
var managedObjectContext = NSManagedObjectContext()
'init()' was deprecated in iOS 9.0: Use -initWithConcurrencyType: instead
这是什么原因造成的?我该如何解决这个问题?
Apple 改变了核心数据的工作方式。不要使用 init(),而是使用 initWithConcurrencyType 作为 required/recommended.
根本原因与线程安全和对核心数据对象的异步访问有关。
改为:
var managedObjectContext = NSManagedObjectContext(concurrencyType: .MainQueueConcurrencyType)
您可以下载苹果文档查看更多详情。
NSConfinementConcurrencyType
Specifies that the context will use the thread confinement pattern.
Available in iOS 3.0 and later.
Deprecated in iOS 9.0.
或 Command+单击 "NSManagedObjectContext" 直接到 NSManagedObjectContext.h:
@available(iOS, introduced=3.0, deprecated=9.0, message="Use another NSManagedObjectContextConcurrencyType")
case ConfinementConcurrencyType
@available(iOS, introduced=3.0, deprecated=9.0, message="Use -initWithConcurrencyType: instead")
public convenience init()
所以看起来 NSManagedObjectContext() 使用 "ConfinementConcurrencyType" 到 init.When Apple 在 iOS 9.0 中弃用了 "ConfinementConcurrencyType",为了连贯性,Apple 没有改变行为init() 方法。
所以你最好使用另一个 NSManagedObjectContextConcurrencyTypes( PrivateQueueConcurrencyType, MainQueueConcurrencyType) 和另一个 init 方法:
init(concurrencyType: NSManagedObjectContextConcurrencyType)
一般来说,当 Apple 告诉您某些内容已被弃用时,您总会收到类似
的消息
'init()' was deprecated in iOS 9.0: Use -initWithConcurrencyType: instead
很明显,您需要做的是遵循给您的非常强烈的提示:不要使用 init。阅读 initWithConcurrencyType: 的作用,找出调用它的正确方法,并将 init 调用替换为对 initWithConcurrencyType:
的调用
将此作为对一般问题的回答,因为实际上,您应该能够自己解决这个问题。
我的在线模型出现错误(黄色警告):
var managedObjectContext = NSManagedObjectContext()
'init()' was deprecated in iOS 9.0: Use -initWithConcurrencyType: instead
这是什么原因造成的?我该如何解决这个问题?
Apple 改变了核心数据的工作方式。不要使用 init(),而是使用 initWithConcurrencyType 作为 required/recommended.
根本原因与线程安全和对核心数据对象的异步访问有关。
改为:
var managedObjectContext = NSManagedObjectContext(concurrencyType: .MainQueueConcurrencyType)
您可以下载苹果文档查看更多详情。
NSConfinementConcurrencyType
Specifies that the context will use the thread confinement pattern.
Available in iOS 3.0 and later.
Deprecated in iOS 9.0.
或 Command+单击 "NSManagedObjectContext" 直接到 NSManagedObjectContext.h:
@available(iOS, introduced=3.0, deprecated=9.0, message="Use another NSManagedObjectContextConcurrencyType")
case ConfinementConcurrencyType
@available(iOS, introduced=3.0, deprecated=9.0, message="Use -initWithConcurrencyType: instead")
public convenience init()
所以看起来 NSManagedObjectContext() 使用 "ConfinementConcurrencyType" 到 init.When Apple 在 iOS 9.0 中弃用了 "ConfinementConcurrencyType",为了连贯性,Apple 没有改变行为init() 方法。 所以你最好使用另一个 NSManagedObjectContextConcurrencyTypes( PrivateQueueConcurrencyType, MainQueueConcurrencyType) 和另一个 init 方法:
init(concurrencyType: NSManagedObjectContextConcurrencyType)
一般来说,当 Apple 告诉您某些内容已被弃用时,您总会收到类似
的消息'init()' was deprecated in iOS 9.0: Use -initWithConcurrencyType: instead
很明显,您需要做的是遵循给您的非常强烈的提示:不要使用 init。阅读 initWithConcurrencyType: 的作用,找出调用它的正确方法,并将 init 调用替换为对 initWithConcurrencyType:
的调用将此作为对一般问题的回答,因为实际上,您应该能够自己解决这个问题。