所以这可能是一个 super 简单的问题,但我已经看过但找不到答案。 假设我做了一个类,我用这个类的实例填充了一个 NSMutableArray,就是这样。我想使用 for in 循环来循环。什么是最简单的转换方式,这样我就不必每次都想在循环中调用当前实例?
这里显示:
for m in objects {
m.randomVar = "hello"
}
其中 m 是我的自定义对象,它有一个 randomVar 作为字符串,而 objects 是一个自定义对象数组。
当然上面的代码不会执行,因为 xcode 假设 m 是一个 [AnyObject?]。最好的地方和方式是让 m 进入自己的类(class)。假设我们要更改多个变量,因此每次都进行转换并不是最佳选择。
对不起,如果我不清楚。谢谢
最佳答案
回避问题。
不要使用 NSArray/NSMutableArray — 只需使用
let
/var
纯 Swift 数组的变量,例如[MyClass]
.或者,如果您的数组来自 Objective-C,则在 Xcode 7+ 中您可以使用
NSArray<MyClass *> *
将其作为[MyClass]
公开给 Swift 的语法而不是[AnyObject]
.转换数组。
使用
objects as! [MyClass]
(不安全)如果您绝对确定它包含MyClass
的实例.转换变量。
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/