小编use*_*628的帖子

Swift 中的延迟内部任务修饰符

如何在 Swift 中的 Task 修饰符中调用 defer ?我想延迟执行清理操作。这包括将loadingState设置为.idle并将selectedImage设置为nil等。无论是否抛出异常,延迟代码都应该触发。

Task {
    do {
        defer {
            print("DEFER")
            self.selectedImage = nil
            loadingState = .idle
            chatText = ""
        }
            
        try await sendMessage()
        print("")
    } catch {
        print(error.localizedDescription)
    }
}
Run Code Online (Sandbox Code Playgroud)

但我收到以下编译错误:

主要参与者隔离的属性“loadingState”不能从主要参与者发生突变

任何帮助表示赞赏。

更新:

Task { @MainActor in
    
    do {
        
        defer {
            print("DEFER")
            loadingState = .idle
            self.selectedImage = nil
            loadingState = .idle
            chatText = ""
        }
        
        try await sendMessage()
        
    } catch {
        print(error.localizedDescription)
    }
    
}
Run Code Online (Sandbox Code Playgroud)

更新2

这是产生类似错误的最少代码:

enum SampleError: Error {
    case operationFailed
}

func doSomething() …
Run Code Online (Sandbox Code Playgroud)

swift

2
推荐指数
1
解决办法
525
查看次数

SwiftUI 返回列表<ShoppingItem> 的领域

我将 Realm 与 SwiftUI 结合使用并创建父子关系。我正在创建以下属性,以便它可以返回列表。我创建属性的原因是因为我想对其执行过滤和排序,稍后我将执行此操作。

 var items: List<ShoppingItem> {
        shoppingList.items
    }
Run Code Online (Sandbox Code Playgroud)

我收到一条奇怪的错误消息:

在此输入图像描述

realm swiftui

1
推荐指数
1
解决办法
625
查看次数

标签 统计

realm ×1

swift ×1

swiftui ×1