未初始化从初始化程序返回的所有存储属性的错误[重复]
Posted
技术标签:
【中文标题】未初始化从初始化程序返回的所有存储属性的错误[重复]【英文标题】:Error without initializing all stored properties return from initializer [duplicate] 【发布时间】:2017-06-29 10:05:49 【问题描述】:enter image description here
我正在将 swift 1.2 转换为 swift 3.2,这里 init 显示错误,请提供任何建议
var context:NSManagedObjectContext
var psc:NSPersistentStoreCoordinator
var model:NSManagedObjectModel
var store:NSPersistentStore? = nil
var contextDict = [Int : NSManagedObjectContext]()
var results:NSBatchUpdateResult
init()
let bundle = Bundle.main
let modelURL =
bundle.url(forResource: "maildough", withExtension:"momd")
model = NSManagedObjectModel(contentsOf: modelURL!)!
psc = NSPersistentStoreCoordinator(managedObjectModel:model)
context = NSManagedObjectContext(concurrencyType:.mainQueueConcurrencyType)
context.persistentStoreCoordinator = psc
///getting error here
在不初始化所有存储属性的情况下从初始化程序返回错误
【问题讨论】:
你错过了results
初始化。
var 结果:NSBatchUpdateResult?试试这个。
【参考方案1】:
对于 swift 3+,您需要这样做
var errorHandler: (Error) -> Void = _ in
lazy var libraryDirectory: NSURL =
let urls = FileManager.default.urls(for: .libraryDirectory, in: .userDomainMask)
return urls[urls.count-1] as NSURL
()
lazy var managedObjectModel: NSManagedObjectModel =
let modelURL = Bundle.main.url(forResource: "maildough", withExtension: "mom")
return NSManagedObjectModel(contentsOf: modelURL!)!
()
lazy var persistentStoreCoordinator: NSPersistentStoreCoordinator =
let coordinator = NSPersistentStoreCoordinator(managedObjectModel:
self.managedObjectModel)
let url =
self.libraryDirectory.appendingPathComponent("maildough.sqlite")
do
try coordinator.addPersistentStore(ofType:
NSSQLiteStoreType,
configurationName: nil,
at: url,
options: [
NSMigratePersistentStoresAutomaticallyOption: true,
NSInferMappingModelAutomaticallyOption: true
]
)
catch
// Report any error we got.
NSLog("CoreData error \(error), \(error._userInfo)")
self.errorHandler(error)
return coordinator
()
lazy var managedObjectContext: NSManagedObjectContext =
let coordinator = self.persistentStoreCoordinator
var mainManagedObjectContext = NSManagedObjectContext(concurrencyType: .mainQueueConcurrencyType)
mainManagedObjectContext.persistentStoreCoordinator = coordinator
return mainManagedObjectContext
()
【讨论】:
以上是关于未初始化从初始化程序返回的所有存储属性的错误[重复]的主要内容,如果未能解决你的问题,请参考以下文章
CoreData 和 Codable 类编译器错误:在从初始化程序返回之前,未在所有路径上调用“self.init”
错误记录Kotlin 代码运行时报错 ( 成员属性初始化顺序是按照从上到下顺序进行的 , 上面的属性不要调用下面未进行初始化的属性 )
错误记录Kotlin 代码运行时报错 ( 成员属性初始化顺序是按照从上到下顺序进行的 , 上面的属性不要调用下面未进行初始化的属性 )