Array Swift中的CGFloat

时间:2015-02-16 03:20:24

标签: arrays xcode class swift cgfloat

我对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]
    ]

1 个答案:

答案 0 :(得分: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"]!