Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 在Swift中有数组问题_Arrays_Swift_Variables_For Loop - Fatal编程技术网

Arrays 在Swift中有数组问题

Arrays 在Swift中有数组问题,arrays,swift,variables,for-loop,Arrays,Swift,Variables,For Loop,我正在学习如何构建应用程序,并与Swift合作完成此项目 我有一个朋友帮我从一个网站上提取数据,看起来他用变量创建了类,并将它们映射到特定的扩展名(即“用户名”),所以当我调用变量数据(如profile)时,我会调用它。下面使用luck_30来存储“Stats.luck_30” 因此,在我的一个变量中,这个“Profile”类被设置为一个数组。我可以将数组从类中拉出,但我似乎无法执行for while语句,用for命令中的变量替换[#] func aliveWorkers(profile: Pr

我正在学习如何构建应用程序,并与Swift合作完成此项目

我有一个朋友帮我从一个网站上提取数据,看起来他用变量创建了类,并将它们映射到特定的扩展名(即“用户名”),所以当我调用变量数据(如profile)时,我会调用它。下面使用luck_30来存储“Stats.luck_30”

因此,在我的一个变量中,这个“Profile”类被设置为一个数组。我可以将数组从类中拉出,但我似乎无法执行for while语句,用for命令中的变量替换[#]

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
}

使用
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)
    }
}
注意一些事情。。。您不需要使用
+
来连接这些字符串。您可以使用字符串插值<代码>\(变量)在字符串中插入
变量的值


在不更改变量时,尝试使用
let
而不是
var
。您也不需要显式定义变量的类型。

您的变量
如果
不是计数器,则它是实际对象。你可以这样做:

for worker in myWorkers {
    let workerIsAlive = worker.alive!
}
或者,如果您需要索引

for i in 0 ..< myWorkers.count {
    let worker = myWorkers[i]
    let workerIsAlive = worker.alive!
}
作为一种风格,我不会使用
NSNumber
,而是使用
Int
Bool
或任何实际数据。另外,看起来
alive
变量不应该是可选的,因为您正在到处展开它。为了避免以后出现“神秘”崩溃,您可能需要考虑将其设置为非可选类型。

谢谢。“为mywokers中的工人”正在工作。我仍在学习,并将审查我现有的代码中的任何这些问题。
for i in 0 ..< myWorkers.count {
    let worker = myWorkers[i]
    let workerIsAlive = worker.alive!
}
for (i, worker) in enumerate(myWorkers) {
    let workerIsAlive = worker.alive!
}