ios SwiftData在设置可选的String of Codable属性时崩溃

6vl6ewon  于 9个月前  发布在  iOS
关注(0)|答案(1)|浏览(116)

我遇到了一个问题,将SwiftData对象的属性设置为带有可选String的Codable结构会导致应用程序崩溃。
例如,如果我有以下模型对象和结构:

@Model
final class Item {
    var timestamp: Date
    var codableProp: CodedValue?
    
    init(timestamp: Date, cProp: CodedValue?) {
        self.timestamp = timestamp
            self.codableProp = cProp
    }
}

struct CodedValue: Codable{
    var string0: String? = nil
    var bool0: Bool? = nil
    var bool1: Bool? = nil
}

字符串
如果我使用以下JSON创建CodedValue的示例,应用程序会崩溃:

{
    "bool0": true
}


我得到的具体错误是:
“无法将类型”Swift.Optional<Swift.String>“(0x1c1e3f000)的值强制转换为”Swift.String“(0x1c1e37e30)”
崩溃似乎发生在@Model宏中的某个地方:

tzcvj98z

tzcvj98z1#

我在这里找到了一个解决方案:swift data crash solution
@Model装饰器添加到所有模型中。并且不要在Item构造函数中分配CodedValue模型。因为您的应用可能会崩溃。这只是SwiftData错误。

let codedValue = CodedValue(string0: "", bool0: false, bool1: false)
let item = Item(timestamp: Date.now)
item.codableProp = codedValue

字符串

相关问题