I have this code:
struct DailyRewardItem {}
@MainActor
protocol Plugin {
var dailyRewardItems: [DailyRewardItem] { get }
}
enum MagicItemType: CaseIterable {
case shuffle
case hammer
case rocket
case bomb
@MainActor
var dailyRewardItem: DailyRewardItem {
return DailyRewardItem()
}
}
class MyPlugin: Plugin {
let dailyRewardItems = MagicItemType.allCases.map(.dailyRewardItem)
}
I got this warning:
Cannot form key path to main actor-isolated property ‘dailyRewardItem’; this is an error in the Swift 6 language mode
Here MyPlugin
is implicitly main actor because it extends Plugin. So MyPlugin::dailyRewardItems
is also main actor. The keyPath
is also in main actor. Not sure why this gives warning.
If I don’t use the keyPath, it is working fine without warning.
let dailyRewardItems = MagicItemType.allCases.map { $0.dailyRewardItem }