【问题标题】:CGFloat in Array Swift数组 Swift 中的 CGFloat
【发布时间】:2015-02-16 03:20:24
【问题描述】:

我对 Swift 中的数组有疑问。

如果我有这样的变量:

var name = [“cafe A”, “Cafe B”]
var image = [“cafeaimg.jpg”, “cafebimg.jpg”]
var fav = [false, false]

我会写一个这样的类:

class cafe {
    var name:String = “”
    var image:String = “”
    var fav:Bool = false

    init(name:String, image:String, fav:Bool) {
        self.name = name
        self.image = image
        self.fav = fav
}
}

我的问题: 我如何用这样的 CGFloat 变量编写一个类:

var image = [“image1.jpg”, “image2.jpg”]
var calc : [[CGFloat]] = [
    [77, 53, 223, 53, 77, 247, 223, 247],
    [63, 34, 237, 34, 63, 265, 237, 265]
    ]

【问题讨论】:

  • CGFloat 数组有什么不好的地方?
  • 它确实有效,我只是想尝试另一种方式.. :)

标签: arrays xcode class swift cgfloat


【解决方案1】:

如果您对如何在 init 函数中设置 CGFloat 值感到困惑,您可以这样做:

class myNewClass
{
    var calc : [[CGFloat]] = [[77, 53, 223, 53, 77, 247, 223, 247],[63, 34, 237, 34, 63, 265, 237, 265]]

    init(index:Int, value:CGFloat...)
    {
        calc[index] = value
    }
}

如果你随后实例化 myNewClass:

let newClass:myNewClass = myNewClass(index: 0, value: 1, 2, 3)

以后再说:

println(newClass.calc.count)
println(newClass.calc[0])

这将打印:

2
[1.0, 2.0, 3.0]

如果在初始化过程中,你想添加一个元素,你当然会使用 append。

编辑:

如果您只想将 CGFloat 数组与特定图像相关联,您可以使用字典,而实际上不需要创建单独的类来执行此操作。

例如,如果我将以下行放在我的 appDelegate 文件中,但在任何类之外(上面)

var calcDict:[String:[CGFloat]] = ["image1.jpg": [77, 53, 223, 53, 77, 247, 223, 247], "image2.jpg":[63, 34, 237, 34, 63, 265, 237, 265]]

因为它是在任何类之外声明的,所以现在可以从代码中的任何位置看到它。

如果那样,我在代码的其他地方写:

var myCGFloats = calcDict["image1.jpg"]!
println(myCGFloats)

calcDict["image3.jpg"] = [1, 2, 3]
myCGFloats = calcDict["image3.jpg"]!
println(myCGFloats)

打印出来:

[77.0, 53.0, 223.0, 53.0, 77.0, 247.0, 223.0, 247.0]
[1.0, 2.0, 3.0]

字典查找的返回是一个可选类型,所以我放了一个 !在每个 myCGFloats = 语句之后展开从字典返回的值。

如果您想在视图控制器类中声明 calcDict,您也可以这样做。在您的视图控制器类(我们称其为 MyViewController)中,但在任何函数之外(如 init()),您只需要:

var calcDict:[String:[CGFloat]] = ["image1.jpg": [77, 53, 223, 53, 77, 247, 223, 247], "image2.jpg":[63, 34, 237, 34, 63, 265, 237, 265]]

这会创建一个实例变量。然后,您可以直接从视图控制器内部访问 calcDict,或者如果您已将视图控制器实例化为:

myViewController = MyViewController()

然后从代码中可见 myViewController 的任何地方,您都可以访问 calcDict:

var myCGFloats = myViewController.calcDict["image1.jpg"]!

【讨论】:

  • 您好,感谢您的回答。但我很抱歉我是编程新手.. :) 但我还有另一个问题要回答。我如何根据所选图像使用“计算”​​?所以它就像“对于 image1,使用 calc 1”“对于 image2,使用 calc2”。我必须在哪里写计算?在 myNewClass 类(在您的示例中)或在我实例化它的视图控制器中?
  • 我已经编辑了我的答案。如果这不是您想要的,请告诉我。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-29
  • 2014-10-10
  • 1970-01-01
  • 2016-03-21
  • 1970-01-01
相关资源
最近更新 更多