Swift中从结构体文件检索数组的语法咨询及函数问题排查
解决Swift中从结构体获取数组的语法问题
别担心,这个问题其实挺常见的,我帮你梳理下代码里的几个问题,再给你正确的写法:
首先看你代码里的几个明显问题:
- 类型定义错误:
[Array]这种写法不对,这里应该替换成你实际使用的结构体类型,比如你的结构体叫User,那就要写成[User]——你要传递的是结构体组成的数组,而不是Array类型本身的数组。 - 局部变量引用错误:
finalArray是你函数内部定义的局部变量,不需要加self.,直接用finalArray就行。 - 数组初始化冗余:如果
someList本身就是数组类型(比如[YourStruct]),那不需要用Array(someList)来转换,直接赋值给finalArray就好;如果someList是其他集合类型(比如Set),那这个转换是必要的。
下面给你一个完整的正确示例:
假设你的结构体是这样的:
// 先定义你的结构体 struct TodoItem { let id: Int let title: String }
然后正确的fetchArray函数应该这么写:
func fetchArray(completion: @escaping ([TodoItem]) -> Void) { // 模拟获取数据的逻辑,比如从本地文件/网络请求得到someList let someList: [TodoItem] = [ TodoItem(id: 1, title: "买菜"), TodoItem(id: 2, title: "写代码") ] // 如果someList已经是数组类型,直接赋值 let finalArray = someList // 或者如果是其他集合,比如Set,才需要转换:let finalArray = Array(someList) // 调用completion传递数组,注意不用self. completion(finalArray) }
调用这个函数的方式:
fetchArray { todoItems in // 这里就能拿到结构体数组todoItems了 print(todoItems) }
总结一下核心要点:
- 明确你要传递的数组元素类型(就是你的结构体类型),不要用
Array作为泛型参数 - 局部变量直接引用,不要错误添加
self. - 根据
someList的实际类型决定是否需要数组转换
内容的提问来源于stack exchange,提问作者user3410804
相关产品推荐
相关产品推荐

