ios - 什么时候投swift

标签 ios swift for-loop casting

所以这可能是一个 super 简单的问题,但我已经看过但找不到答案。 假设我做了一个类,我用这个类的实例填充了一个 NSMutableArray,就是这样。我想使用 for in 循环来循环。什么是最简单的转换方式,这样我就不必每次都想在循环中调用当前实例?

这里显示:

    for m in objects {
      m.randomVar = "hello"
    }

其中 m 是我的自定义对象,它有一个 randomVar 作为字符串,而 objects 是一个自定义对象数组。

当然上面的代码不会执行,因为 xcode 假设 m 是一个 [AnyObject?]。最好的地方和方式是让 m 进入自己的类(class)。假设我们要更改多个变量,因此每次都进行转换并不是最佳选择。

对不起,如果我不清楚。谢谢

最佳答案

  1. 回避问题。

    不要使用 NSArray/NSMutableArray — 只需使用 let/var纯 Swift 数组的变量,例如 [MyClass] .

    或者,如果您的数组来自 Objective-C,则在 Xcode 7+ 中您可以使用 NSArray<MyClass *> *将其作为 [MyClass] 公开给 Swift 的语法而不是 [AnyObject] .

  2. 转换数组。

    使用 objects as! [MyClass] (不安全)如果您绝对确定它包含 MyClass 的实例.

  3. 转换变量。

    for m in objects {
        if let m = m as? MyClass { ...
        // or
        let myobj = m as! MyClass // unsafe
    

    或在 Swift 2 (Xcode 7) 中

    for case let m as MyClass in objects {
        // this is executed only for objects which are instances of MyClass,
        // ignoring other objects in the array.
    }
    

关于ios - 什么时候投swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32032148/

相关文章:

iOS 7 远程通知

ios - Apple 帐户没有任何开发团队

ios - 符合 Equatable for Diffing 的协议(protocol)

R通过for循环用变量写入文件

swift - 我想在 Swift 中创建一个乘法表,但出现以下错误

iOS Instruments Allocation 和 Leaks 使 Xamarin 应用程序崩溃

ios - CLLocation 没有给出实际速度

ios - NavigationLink 似乎只占用一点空间

json - 将 json 变量转换为 swift 变量

JavaScript 在 for 循环中返回 var