SwiftUI使用空数组初始化Picker报初始化调用无精确匹配错误求助
问题解决方法
错误原因
- 声明空数组时未指定元素类型,Swift编译器无法自动推断
userArray的存储类型,默认会推断为[Any]类型 - 后续
ForEach遍历数组生成Text视图时,Text没有接受Any类型参数的初始化方法,因此抛出“No exact matches in call to initializer”错误
修复方案
直接修改userArray的声明,明确指定元素类型即可,根据代码中Text($0)的用法,数组元素应为String类型:
// 修改前(错误写法,无类型声明) @State var userArray = [] // 修改后(正确写法,明确指定元素为String类型) @State var userArray: [String] = []
补充说明
如果数组需要存储自定义模型,只需把声明中的[String]替换为对应的模型类型即可,同时要确保该类型遵守Hashable协议(因为代码使用了id: \.self作为遍历的唯一标识)。
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

