我的最终目标是将所需的数组传递给函数。问题是数组名称取决于具体情况。它可能是30个名字中的1个。
我有大约30个数组都命名为“default_SomeName”。现在,前一个VC传递SomeName值。基于该值,我的目标是将30个数组中的一个传递给函数。然而,动态参考显然并不容易。
我试过了:
var someName: String! //Passed from presenting VC
let desiredArray = "default_" + someName
myFunction(desiredArray)
但我明白了:
无法将'String'类型的值转换为预期的参数类型[String]
任何人都知道如何做到这一点?
答案 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")
}