Swift Xcode13中SwiftUI List调用identified报Array无该成员错误怎么解决?
错误原因
identified(by:) 是 SwiftUI 早期测试版本提供的API,在正式版发布后就被官方移除,所以在Xcode 13对应的SwiftUI版本中无法调用该方法,才会抛出你遇到的报错。
解决方案
直接将List行的identified(by: \String.self)写法替换为显式指定id参数的写法即可,修改后的对应代码行如下:
List(categories.keys.sorted(), id: \.self) { key in
修改完成后的完整HomeView代码参考:
import SwiftUI struct HomeView: View { var categories:[String:[Sticker]] { .init( grouping: stickerData, by: {$0.category.rawValue} ) } var body: some View { NavigationView{ List(categories.keys.sorted(), id: \.self) { key in StickerRow(categoryName: " Sticker \(key)".uppercased(), stickers: self.categories[key]!) } } } }
补充说明
你当前的场景中分类key是唯一的字符串,用\.self作为id完全符合要求,不会出现重复标识的问题。如果后续你的数据源有唯一的自定义id属性,也可以把id参数替换为对应的属性KeyPath即可。
内容的提问来源于stack exchange,提问作者EmmeBee
相关产品推荐
相关产品推荐

