【问题标题】:Having array problems in Swift在 Swift 中遇到数组问题
【发布时间】:2015-07-09 03:26:00
【问题描述】:

我正在学习如何为这个项目构建应用程序和使用 Swift。

我有一个朋友帮我从网站中提取数据,看起来他创建了带有变量的类并将它们映射到某些扩展名(即“用户名”),所以当我调用诸如配置文件之类的变量数据时,我会调用它.下面使用luck_30 能够存储“Stats.luck_30”

 luck_30.text = profile.luck_30

因此,在此“配置文件”类中的一个变量内部设置为一个数组。我可以将数组拉出类,但我似乎无法用 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
}

【问题讨论】:

    标签: arrays swift variables for-loop


    【解决方案1】:

    你的变量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 变量不应该是可选的,因为您要在任何地方展开它。为避免以后出现“神秘”崩溃,您可能需要考虑将其设为非可选类型。

    【讨论】:

    • 谢谢。 “我的工人中的工人”正在工作。我仍在学习,并将针对这些问题查看我现有的代码。
    【解决方案2】:

    当使用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。您也不需要显式定义变量的类型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-08
      • 1970-01-01
      • 1970-01-01
      • 2017-09-18
      • 2018-06-12
      • 1970-01-01
      • 2018-12-25
      • 2016-11-16
      相关资源
      最近更新 更多