数组中的 CGFloat Swift
CGFloat in Array Swift
我对 Swift 中的数组有疑问。
如果我有这样的变量:
var name = [“cafe A”, “Cafe B”]
var image = [“cafeaimg.jpg”, “cafebimg.jpg”]
var fav = [false, false]
我会这样写 class :
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 变量编写 class:
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]
]
如果您对如何在 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]
如果在初始化期间,你想添加一个元素,你当然会使用追加。
编辑:
如果您只想将您的 CGFloat 数组与特定图像相关联,您可以使用字典,而您实际上不需要创建单独的 class 来完成它。
例如,如果我将以下行放在我的 appDelegate 文件中,但在(以上)任何 class
之外
var calcDict:[String:[CGFloat]] = ["image1.jpg": [77, 53, 223, 53, 77, 247, 223, 247], "image2.jpg":[63, 34, 237, 34, 63, 265, 237, 265]]
因为它是在任何 class 之外声明的,所以现在在您的代码中的任何地方都可以看到它。
如果那么,我在代码的其他地方写:
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]
字典查找中的 return 是可选类型,所以我放了一个 !在每个 myCGFloats = 语句之后解包值 returned 从字典中。
如果您想在视图控制器中声明 calcDict class,您也可以这样做。在你的视图控制器中 class(我们称它为 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"]!
我对 Swift 中的数组有疑问。
如果我有这样的变量:
var name = [“cafe A”, “Cafe B”]
var image = [“cafeaimg.jpg”, “cafebimg.jpg”]
var fav = [false, false]
我会这样写 class :
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 变量编写 class:
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]
]
如果您对如何在 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]
如果在初始化期间,你想添加一个元素,你当然会使用追加。
编辑:
如果您只想将您的 CGFloat 数组与特定图像相关联,您可以使用字典,而您实际上不需要创建单独的 class 来完成它。
例如,如果我将以下行放在我的 appDelegate 文件中,但在(以上)任何 class
之外var calcDict:[String:[CGFloat]] = ["image1.jpg": [77, 53, 223, 53, 77, 247, 223, 247], "image2.jpg":[63, 34, 237, 34, 63, 265, 237, 265]]
因为它是在任何 class 之外声明的,所以现在在您的代码中的任何地方都可以看到它。
如果那么,我在代码的其他地方写:
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]
字典查找中的 return 是可选类型,所以我放了一个 !在每个 myCGFloats = 语句之后解包值 returned 从字典中。
如果您想在视图控制器中声明 calcDict class,您也可以这样做。在你的视图控制器中 class(我们称它为 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"]!