【问题标题】:How to use a variable to construct command如何使用变量构造命令
【发布时间】:2015-11-14 07:36:01
【问题描述】:

我在 Xcode 中有一个变量,我需要用它来构造另一个命令。我如何结合这个?这是概念

我有一个名为“activechannel1”的变量和按钮 Overlay1 - Overlay12

我想设置特定按钮的图像,该按钮将取决于 activechannel1 的值。所有的数字都对应于文件名,所以我正在尝试这样做。

让我们这么说

ActiveChannel1 = 6 // This changes and represents which button I want to change

我正在尝试这样做,但收到一个连续的语句错误:

Overlay"\(ActiveChannel1)".image = UIImage(named: "y\(ActiveChannel1)")

我想基本上屈服:

Overlay6.image = UIImage(named "y6")

【问题讨论】:

    标签: xcode swift swift2 xcode7


    【解决方案1】:

    您不能动态地“键入”变量名。但是,您可以以一种变量可以改变您使用的变量的方式访问它们。

    您可能会觉得有用的类(请注意,您在 Swift 中使用这些类的方式有所改变):
    NSArray
    NSDictionary

    给定 X 作为数字(这里是字符串的形式):

    对于OverlayX,可以使用数组。

    let overlays = [Overlay1, Overlay2, /*...*/]
    

    使用索引 0-11 访问正确的变量。

    对于yX,请使用NSString(format:)

    //use %d for int
    let imageName = NSString("y%@", X - 1) //%@ is Obj-C format for id IIRC, I'm not sure if it changes in Swift
    overlays[X - 1].image = UIImage(named: imageName)
    //or, in a single line
    overlays[X - 1].image = UIImage(named: NSString(format: "y%@", argList: X - 1))
    

    请注意,此代码未经测试。
    另请注意,我使用 Objective-C 多于 Swift。如果有人遇到这个并发现语法不正确,请评论或编辑我的帖子。

    【讨论】:

    • 当您使用`overlays[1]` 访问叠加层时,您将获得Overlay2 回复。所以在这种情况下,它应该是overlays[X-1].image = ...,因为你从 1 开始计数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-06
    • 1970-01-01
    • 1970-01-01
    • 2011-10-24
    • 2015-12-14
    • 2022-01-08
    • 2015-11-15
    相关资源
    最近更新 更多