调用其中Name是半字符串和半变量的数组:动态引用

时间:2016-02-13 23:41:36

标签: ios arrays swift variables concatenation

我的最终目标是将所需的数组传递给函数。问题是数组名称取决于具体情况。它可能是30个名字中的1个。

我有大约30个数组都命名为“default_SomeName”。现在,前一个VC传递SomeName值。基于该值,我的目标是将30个数组中的一个传递给函数。然而,动态参考显然并不容易。

我试过了:

var someName: String! //Passed from presenting VC
let desiredArray = "default_" + someName
myFunction(desiredArray)

但我明白了:

  

无法将'String'类型的值转换为预期的参数类型[String]

任何人都知道如何做到这一点?

2 个答案:

答案 0 :(得分:2)

您可以使用字典将每个字典与其名称相关联。 Apple Swift一书中解释了字典,但通常你会这样做:

var dictionary=[String:[Int]]()

dictionary["default_1234"]=[1,2,3,4]
dictionary["default_5678"]=[5,6,7,8]

let suffix="1234"

print(dictionary["default_\(suffix)"])

在这种情况下,我使用了Int数组,但您可以使用任何数组类型

答案 1 :(得分:0)

嗯,因为似乎没有一个简单的方法,我决定采用一种确定的,明确的方式!

这个开关是基本的。它需要someName,将它与一个case匹配,它们都运行相同的函数,但是一个特定于someName值的数组。

func passArrayToFunc () {
    switch someName {
    case "somename1":
        funcThatNeedsArray(someArray1)
    case "someName2":
        funcThatNeedsArray(someArray2)
    case "someName3":
        funcThatNeedsArray(someArray3)
    case "someName4":
        funcThatNeedsArray(someArray4)
    case "someName5":
        funcThatNeedsArray(someArray5)
    case "someName6":
        funcThatNeedsArray(someArray6)
    case "someName7":
        funcThatNeedsArray(someArray7)
    case "someName8":
        funcThatNeedsArray(someArray8)
    default:
        print("No matches")
    }