Swift使用prefix/suffix分割数组时类型不匹配报错,求解决方案
解决Swift中ArraySlice无法直接赋值给Array的问题
嘿,这个问题我之前也踩过坑!原因其实很明确:prefix(upTo:) 和 suffix(from:) 这两个方法返回的是 ArraySlice<User> 类型,而你定义的 collectionData 和 tableData 是 [User](也就是 Array<User>)类型。ArraySlice本质是原数组的一个"视图",它并没有创建新的独立数组,只是指向原数组的部分元素,所以没法直接赋值给Array类型的变量。
解决起来很简单,只需要把返回的Slice转换成真正的Array就行,这里给你两种常用的写法:
方法1:用Array初始化器显式转换
这是最直观的方式,直接用Array()把Slice包裹起来,就能得到标准的Array类型:
let data = serverResponse.data as! [User] collectionData = Array(data.prefix(upTo: 10)) tableData = Array(data.suffix(from: 11))
方法2:利用类型强制转换简化写法
如果你想代码更简洁一点,也可以直接把Slice强制转换成[User],效果和上面完全一致:
let data = serverResponse.data as! [User] collectionData = data.prefix(upTo: 10) as [User] tableData = data.suffix(from: 11) as [User]
另外提个小细节:如果只是想取数组的前10个元素,prefix(10) 和 prefix(upTo: 10) 的功能是完全一样的,前者的写法会更短哦~
内容的提问来源于stack exchange,提问作者Shahbaz Akram
相关产品推荐
相关产品推荐

