[英]SwiftUI Preview crash with await async iOS15 if returns a struct with UUID
我簡化為非常簡單的代碼。 如果結構有一個Int
正在工作,如果有一個UUID
,則預覽會崩潰(如果我在模擬器或真實設備上運行,它就可以工作)
使用 iOS 15 Xcode 13.1 和 beta 13.2 測試
import SwiftUI
import Combine
struct MyStruct: Codable, Hashable, Identifiable {
var id: UUID = UUID() //with Int is ok
var str: String
}
struct ContentView2: View {
@State private var myStruct: MyStruct = MyStruct(str: "struct1-init")
var body: some View {
VStack {
Text(myStruct.str)
.onAppear(perform: doSometingStruct)
}
}
private func doSometingStruct() {
Task {
let get = await getAsyncStruct()
myStruct = get
}
}
private func getAsyncStruct() async -> MyStruct {
let str = MyStruct(str: "struct1-done")
return str
}
}
struct ContentView2_Previews: PreviewProvider {
static var previews: some View {
ContentView2()
}
}
使用異步代碼預覽視圖似乎是 xcode 的錯誤...嘗試使用注釋任務進行測試:
private func doSometingStruct() {
//Task {
// let get = await getAsyncStruct()
// myStruct = get
//}
}
感覺不“正確”,但能夠通過不讓異步 function 返回任何內容並將結構存儲在可以從調用 function 獲取的全局變量中來解決此問題。 感覺各種錯誤,但它確實可以修復崩潰。 如果有人有更好的解決方案,我很想知道!
這似乎已在 Xcode 14.0 中修復
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.