gpt4 book ai didi

Swift 3d 数组创建

转载 作者:可可西里 更新时间:2023-11-01 00:59:08 25 4
gpt4 key购买 nike

我想创建一个 3d 数组。数组将是 5*5* 无限(最后一个或最里面的数组可能有 3-5 个字符串类型的对象)。

我试过这样的:

var array3D = [[[String]]]()

并尝试像这样添加新字符串

array3D[ii][yy] += y.components(separatedBy: ";")

但是在向其中添加新数组或字符串时遇到了问题。并得到 exc bad instruction 的错误

在学校,我每天有 5 节课。所以一周有 25 节课,我想制作一个代表我的时间表的 iPhone 应用程序。

最佳答案

多维数组只是数组的数组。当你说

var array3D = [[[String]]]()

您创建的是一个空数组,它期望您添加到其中的值的类型为 [[String]] .但是那些内部数组还不存在(更不用说它们内部的内部数组了)。您不能分配给 array3D[ii]因为ii超出了你的空数组的范围,你不能分配给 array3D[ii][yy]因为array3D[ii]不存在,您不能追加到 array3D[ii][yy] 中的数组因为array3D[ii][yy]不存在。

因为你的外层和中层数组的大小是固定的(5 x 5 x n),你可以使用 Array.init(count:repeatedValue:) 轻松创建它们:

let array3D = [[[String]]](count: 5, repeatedValue:
[[String]](count: 5, repeatedValue: []))

(这里最里面的数组是空的,因为看起来你计划总是通过追加来填充。)


但是,您的用例看起来也需要一个相当稀疏的数据结构。如果大多数数组都是空的,为什么还要创建所有这些数组?一种数据结构可能会更好地为您服务,这种数据结构可以让您将索引元素的方式与它们的存储方式分离开来。

例如,您可以使用一个字典,其中每个键都是一些表示(日期、类(class)、索引) 组合的值。这样,不需要考虑没有任何内容的(day, lesson, index) 组合。您甚至可以通过定义您自己的类型并为其提供下标运算符(如 appzYourLife 的回答中提到的),围绕您的组合编码包装一个很好的抽象到键中。

关于Swift 3d 数组创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38294893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com