【发布时间】:2016-04-11 00:01:47
【问题描述】:
我有一个名为 Card 的结构,并且我创建了一个应该创建一副纸牌的函数。我在 SO 上找到了几个关于创建卡片组的线程,但它们要么在 Objective-C 中,要么使用我不想做的枚举来分配等级和套装。
我有这个字符串数组:
let fibonacciSeries = ["0", "1", "2", "3", "5", "8", "13", "21", "34", "55", "89", "144", "∞"]
我希望我的 createDeck 函数使用这些值创建一副牌:
struct Card {
var name = String()
func createDeck(series: [String]) -> [Card] {
var deck = [Card]()
for value in series {
deck.append(Card(name: value))
print("The card name is \(self.name)")
}
return deck
}
}
当我这样称呼它时:
let myDeck = Card().createDeck(fibonacciSeries)
每张卡片的 name 属性为空(或空白),我可以通过 print() 调用看到。
我尝试像这样更改我的 name 属性:
var name = ""
但它们仍然是空白的。
我进行了更多研究并了解到如果我在初始化程序中给它一个值,我可以创建一个属性而不给它一个默认值,所以我添加了这个:
init(name: String) {
self.name = name
}
仍然不高兴,因为 Xcode 提醒我需要在 Card() 调用中为 name 传递一个值,当我这样做时,所有卡片都被命名为我传入的值。
最终,我想将这些卡片放入 UICollectionView 并查看这些值,但我似乎被这个名称属性困在一个圈子里,我无法脱身。
我在这里查看了几个主题,但没有一个提供答案。
非常感谢任何帮助。
【问题讨论】:
-
您的
name属性实际上不应为空,您的打印语句是错误的。您正在打印您正在调用该方法的Card实例的名称,而不是您在该方法中创建的实例。
标签: ios swift struct properties