我试图迭代一个NSMutableArray,它的行为似乎与NSArray不同(至少在XCode 6 beta 3中)
class Element : NSObject { }
let a = NSArray()
let ma = NSMutableArray()
for e in a as Element[] { }
for e in ma as Element[] { } // compiler error: Cannot convert the expression's type 'Element[]' to type 'Element[]'
for e in ma as NSArray as Element[] { }
我很困惑为什么会这样。是否有此行为的解释或这是一个XCode / Swift错误?
答案 0 :(得分:-1)
好的,让我们改一下来澄清这个问题:
class Element : NSObject { }
// Create NSArray and NSMutableArray objective-c objects
let a1 = Element()
let a2 = Element()
let a = NSArray(objects: a1, a2)
let ma = NSMutableArray(objects: a1, a2)
let ae = a as [Element] // ok
let mae = ma as [Element] // error: 'Element' is not identical to 'AnyObject'
let mae2 = ma as NSArray as [Element] // ok
显然,这是一个错误。