ios - iOS Swift Core Data Implementation RELEASE build 的 init() 重新声明无效
问题描述
我遇到了一个奇怪的情况,我不确定如何解决。
我有一个我正在使用 Swift 开发的 iOS 应用程序,它使用我已经成功构建并作为调试构建运行一段时间的核心数据。我现在尝试为发布构建的分析进行构建,随后只是尝试在没有分析的情况下进行发布构建,并且任何一个发布构建都失败并出现错误“init() 的重新声明无效”,用于定义存储实现部分的结构我的代码设置了 Core Data 的存储组件。
这是在调试中编译和运行良好但无法在发布中构建的代码...
struct MyStorage { //<-- Invalid redeclaration of init() build error in release build only
static var shared = MyStorage()
@available(iOS 10.0, *)
private lazy var persistentContainer: NSPersistentContainer = {
let container = NSPersistentContainer(name: "MyStorage")
container.loadPersistentStores { (storeDescription, error) in
print("CoreData: Inited \(storeDescription)")
guard error == nil else {
print("CoreData: trying to create persistentContainer named Model and got Unresolved error \(String(describing: error))")
return
}
}
return container
}()
private lazy var persistenStoreCoordinator: NSPersistentStoreCoordinator? = {
do {
return try NSPersistentStoreCoordinator.coordinator(name:"MyStorage")
} catch {
print ("CoreData: trying to create persistenStoreCoordinator named Model and got Unresolved error \(error)")
}
return nil
}()
private lazy var managedObjectContext: NSManagedObjectContext = {
let coordinator = self.persistenStoreCoordinator
var managedObjectContext = NSManagedObjectContext(concurrencyType: .mainQueueConcurrencyType)
managedObjectContext.persistentStoreCoordinator = coordinator
print ("CoreData: initing and returning managedObjectContext")
return managedObjectContext
}()
enum SaveStatus {
case saved, rolledBack, hasNoChanges
}
var context: NSManagedObjectContext {
mutating get {
if #available(iOS 10.0, *) {
return persistentContainer.viewContext
} else {
return managedObjectContext
}
}
}
mutating func save() -> SaveStatus {
if context.hasChanges {
do {
try context.save()
return .saved
} catch {
context.rollback()
return .rolledBack
}
}
return .hasNoChanges
}
我清理了构建(和选项清理以清理构建文件夹),都无济于事。任何人都可以帮助阐明为什么发布构建失败但调试构建使用相同的代码成功?
提前感谢您的任何帮助或建议。
更新:根据下面的建议,我将 MyStorage 结构更改为一个类并删除了变异,现在代码可以在发布配置中构建,并且可以针对发布的构建进行分析。
解决方案
推荐阅读
- spring-boot - Kotlin + Spring Boot + @Valid 无效子对象的内部对象
- api-platform.com - api平台的自定义查询参数
- list - 当一个列表可能为空时,在 Ansible 中合并两个列表
- c++ - 实现 WM_QUERYENDSESSION
- json - Task.json dataSourceBindings 选择 Azure 资源组以显示其位置
- swift - 当图表上没有数据图时图表视口高度增加
- python - 用于在 Windows 中自动安装软件的 Python 脚本
- flutter - 是否有任何用于颤振的字母图标(图标显示 a、b、c、d....)?
- jquery - 如何将两个 mvc 下拉列表与 jQuery 结合起来?
- r - 左连接的 R 代码,使用匹配的日期和不匹配的其他日期