我已经被困在一个问题上几天了,我不知道如何说出来,所以我没有太多的运气寻找答案,希望你可以帮忙!
我的array of 20 arrays
与我的array of 20 strings
相同,当点击按钮时,数组会更改为所选按钮的名称,我可以使用以下命令将其更改为字符串:
newArray = oldArray[0]
但是找不到一种方法来插入字符串名称作为新的数组名称,如果有人有任何建议我会很高兴,谢谢!
newArray = [oldArray[0]]
只需创建一个包含一个字符串的数组,我一直在寻找类似的函数:
newArray = Array(named: oldArray [0])
但不确定它是否存在。
答案 0 :(得分:0)
如果要插入某些特定索引,请使用babel
,如下所示:
insert
如果您想在最后添加,请使用var newArr = [String]()
newArr.insert("jogendar", at: 0) /// Removes and returns the element at the specified position.
,如下所示:
append
如果要在选择时更改按钮的名称,则不需要维护数组,可以为以下状态设置按钮的标题:
var newArr = [String]()
newArr.append("jogendar") ///Adds the elements of a sequence to the end of the array.
当您想要选择按钮时,按钮名称会根据所选状态自动更改:
let btn = UIButton(frame: CGRect(x: 0, y: 0, width: 100, height: 30))
btn.setTitle("jogendar_defautl", for: UIControlState.normal)
btn.setTitle("jogendar_selected", for: UIControlState.selected)
答案 1 :(得分:0)
这不是一个答案,你没有提供足够的详细信息,但让我们看看我们是否可以帮助你走上正确的轨道。你写道:
我一直在寻找类似的功能:
newArray = Array(named: oldArray [0])
这不存在,因为数组(和其他值)没有名称。您似乎混淆了变量名称和值,它们是非常不同的东西。例如,表达式:
[0, 1, 8, 27, 64]
生成一个包含五个元素的数组值,它没有 name 它只是一个值。该值可以分配给变量:
var cubes = [0, 1, 8, 27, 64]
现在我们有一个带有 name cubes
的变量,其当前值是数组。上面的语句都声明了一个变量cubes
,给它一个类型[Int]
,并为它赋予了一个初始值[0, 1, 8, 27, 64]
。它没有命名值,可以将值复制到另一个变量中:
var anotherVariable = cubes
完成上述操作后,您有两个变量cubes
和anotherVariable
,每个变量当前具有相同的值。值不 共享,您可以更改其中一个值:
anotherVariable[0] = 42
现在anotherVariable
包含值[42, 1, 8, 27, 64]
,而cubes
仍包含值[0, 1, 8, 27, 64]
。
好的,回到你的问题,你写道:
我的
相同array of 20 arrays
与array of 20 strings
...
你似乎在描述的内容是:
var myArrays = [ [0, 1, 4, 9, 16], [0, 1, 8, 27, 64] ]
var myNames = [ "squares", "cubes" ]
您的按钮上有标签squares
和cubes
。您似乎尝试的是通过myArrays
阵列从点击按钮到myNames
的元素 - 这是您在哪里命名"价值观来自。
映射"名称"到一个"阵列"你应该使用词典,它是一个集合键,你的名字,值,你的数组:
let myCollection = [ "squares":[0, 1, 4, 9, 16], "cubes":[0, 1, 8, 27, 64] ]
这声明了一个常量(使用let
而不是var
)字典,其键是字符串和值数组。因此,您有效地拥有一组"命名数组"。
现在,您可以使用以下行的语句按名称为此集合选择一个数组:
var currentArray = myCollection[currentButtonTitle]
其中currentButtonTitle
之前已设置为您点击的按钮的标题。
HTH