myStruct
is a nested, Codable struct that matches some confidential JSON. No enum
in there. Why does my app crash with EXC_BREAKPOINT
on saving and access to myStruct
?
<code>@Model
final class MyModel {
var myStruct: MyStruct
init(myStruct: MyStruct) {
self.myStruct = myStruct
}
}
</code>
<code>@Model
final class MyModel {
var myStruct: MyStruct
init(myStruct: MyStruct) {
self.myStruct = myStruct
}
}
</code>
@Model
final class MyModel {
var myStruct: MyStruct
init(myStruct: MyStruct) {
self.myStruct = myStruct
}
}
This ugly workaround fixes the crash:
<code>@Model
final class MyModel {
var myStructStr: String
var myStruct: MyStruct {
get {
try! JSONDecoder().decode(MyStruct.self, from: myStructStr.data(using: .utf8)!)
}
set {
myStructStr = String(data: JSONEncoder().encode(newValue), encoding: .utf8)!
}
}
init(myStruct: MyStruct) {
self.myStructStr = String(data: JSONEncoder().encode(myStruct), encoding: .utf8)!
}
}
</code>
<code>@Model
final class MyModel {
var myStructStr: String
var myStruct: MyStruct {
get {
try! JSONDecoder().decode(MyStruct.self, from: myStructStr.data(using: .utf8)!)
}
set {
myStructStr = String(data: JSONEncoder().encode(newValue), encoding: .utf8)!
}
}
init(myStruct: MyStruct) {
self.myStructStr = String(data: JSONEncoder().encode(myStruct), encoding: .utf8)!
}
}
</code>
@Model
final class MyModel {
var myStructStr: String
var myStruct: MyStruct {
get {
try! JSONDecoder().decode(MyStruct.self, from: myStructStr.data(using: .utf8)!)
}
set {
myStructStr = String(data: JSONEncoder().encode(newValue), encoding: .utf8)!
}
}
init(myStruct: MyStruct) {
self.myStructStr = String(data: JSONEncoder().encode(myStruct), encoding: .utf8)!
}
}