【发布时间】:2022-11-27 10:27:16
【问题描述】:
这些是数组模型:
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
【问题讨论】:
-
当您写
userSplit[0][0] // 1th user时,您实际上是指userSplit[0].usr[0]吗? -
无论
users数组中有多少元素,目标是将每个UserModelSplit的 4 个元素分组吗?如果有 6 或 7 个用户怎么办?如果有 9 或 10 等怎么办?请更好地解释您想要的逻辑。 -
你是说你想要一个
[[UserModel]],其中内部数组是来自主序列的 3 个用户的块? (如果您使用示例输出而不是伪代码,则为 4 个块!) -
是的 :D 现在我添加了这个细节:userSplit[current].usr[added] = val 我在这一行收到错误:“线程 1:致命错误:索引超出范围”,如何解决这个问题?
-
如果有 6 个用户,那么: userSplit[0][0] // 第一个用户 userSplit[0][1] // 第二个用户 userSplit[0][2] // 第三个用户 userSplit[0][3] //第 4 个用户 userSplit[1][0] // 第 5 个用户 userSplit[1][1] // 第 6 个用户并在此处停止
标签: swift