以下是阵列型号:
struct UserModel: Codable {
var userid: Int
var nickname: String
}
struct UserModelSplit: Codable {
var usr: [UserModel]
}
初始化:
@State private var users = [UserModel]()
@State private var userSplit = [UserModelSplit]()
获取第一个数组:
for bla in userReceived{
users.append(UserModel(userid: bla.userid, nickname: bla.nickname))
}
现在我想将其拆分为多维数组,因此结果应为:
userSplit[0][0] // 1th user
userSplit[0][1] // 2th user
userSplit[0][2] // 3th user
userSplit[0][3] // 4th user
userSplit[1][0] // 5th user
userSplit[1][1] // 6th user
userSplit[1][2] // 7th user
userSplit[1][3] // 8th user
我尝试了所有类型的语法,并查找如何可以做到这一点,没有发现任何有用的。
下面是我尝试过的伪代码:
var current = 0
var added = 0
for val in users{
userSplit[current][added] = val
added += 1
if(added == 3){
current += 1
added = 0
}
}
这个伪代码类似于它在PHP中的实际工作方式
我希望这是可以理解的:D
2条答案
按热度按时间ee7vknir1#
你真的很接近了,要制作一个二维阵列,你可以这样做。
使用您拥有的另一个模型,它应该是这样的...
在这两种情况下,您将得到类似于以下内容的打印输出
你的代码不能工作的最大原因是因为在swift中你只能使用
若要替换现有值,请执行以下操作。
你必须
创建新索引时,请使用此选项。
您可以使用
Array
extension
将任何数组拆分为二维数组然后使用
ffscu2ro2#
您可以使用sequence方法来逐一查看集合,并将每个子序列初始化成其元素的新集合:
用法:
编辑/更新:
如果你不想重复集合元素,你可以只迭代原始集合子序列。
用法:
这将打印
用户模型(用户ID:1、昵称:“一”)
用户模型(用户ID:2、昵称:“B”)
用户模型(用户ID:3、昵称:“c”)
用户模型(用户ID:4、昵称:“d”)
用户模型(用户ID:5、昵称:“e”)
用户模型(用户ID:6、昵称:“f”)
用户模型(用户ID:7、昵称:“g”)
用户模型(用户ID:8、昵称:“h”)
用户模型(用户ID:9、昵称:“i”)
用户模型(用户ID:10、绰号:“j”)
为了使它完整,你可以扩展RangeReplaceableCollection,如下所示。这也适用于字符串(字符集合):