我正在学习如何构建应用程序以及如何使用Swift进行此项目。
我有一个伙伴帮我从网站上提取数据,看起来他创建了带变量的类并将它们映射到某些扩展(IE"用户名")所以当我调用变量数据时如我打电话给它。以下使用luck_30能够存储" Stats.luck_30"
func aliveWorkers(profile: Profile) -> NSNumber{
var myworkers : Array = profile.workers!
//this test works and returns the proper value
var testworker: NSNumber = myworkers[0].alive!
println("The satus of the test worker is " + testworker.description)
/* This code is giving error "Could not find member alive" it does not ifor var
for ifor in myworkers{
var thisworker: NSNumber = myworkers[ifor].alive! as NSNumber
}
*/
return 42
}
所以我的一个变量就在这个" Profile" class被设置为一个数组。我可以将数组从类中拉出来,但我似乎无法使用for语句将[#]替换为for命令中的变量。
{{1}}
答案 0 :(得分:0)
使用for in
循环时,循环变量不是索引,而是您循环的对象。所以..
func aliveWorkers() {
var myworkers = [1, 2, 3]
//this test works and returns the proper value
let testworker = myworkers[0]
print("The satus of the test worker is \(testworker)")
for ifor in myworkers {
print(ifor)
}
}
请注意一些事情......您不需要使用+
来连接这些字符串。你可以使用字符串插值。 \(variable)
在字符串中插入variable
的值。
如果您不更改变量,请尝试使用let
代替var
。您也不需要在变量上明确定义类型。
答案 1 :(得分:0)
您的变量ifor
不是计数器,而是实际对象。你可以这样做:
for worker in myWorkers {
let workerIsAlive = worker.alive!
}
或者,如果您需要索引,
for i in 0 ..< myWorkers.count {
let worker = myWorkers[i]
let workerIsAlive = worker.alive!
}
如果您需要两者:
for (i, worker) in enumerate(myWorkers) {
let workerIsAlive = worker.alive!
}
作为时尚问题,我会远离NSNumber
并使用Int
或Bool
或其他任何数据。此外,看起来alive
变量不应该是可选的,因为你在任何地方展开它。为避免以后出现“神秘”崩溃,您可能需要考虑将其设置为非可选类型。