簡體   English   中英

SwiftUI 如果返回帶有 UUID 的結構,則使用 await async iOS15 預覽崩潰

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM