在Swift中遇到数组问题

时间:2015-07-09 03:26:00

标签: arrays swift variables for-loop

我正在学习如何构建应用程序以及如何使用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}}

2 个答案:

答案 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并使用IntBool或其他任何数据。此外,看起来alive变量不应该是可选的,因为你在任何地方展开它。为避免以后出现“神秘”崩溃,您可能需要考虑将其设置为非可选类型。