Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.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
在Swift中迭代NSMutableArray_Swift - Fatal编程技术网

在Swift中迭代NSMutableArray

在Swift中迭代NSMutableArray,swift,Swift,我试图迭代NSMutableArray,它的行为似乎与NSArray不同(至少在XCode 6 beta 3中是这样) 我不明白为什么会这样。这是一个XCode/Swift错误吗?好的,让我们重新表述一下,以澄清问题: class Element : NSObject { } // Create NSArray and NSMutableArray objective-c objects let a1 = Element() let a2 = Element() let a = NSArray

我试图迭代NSMutableArray,它的行为似乎与NSArray不同(至少在XCode 6 beta 3中是这样)


我不明白为什么会这样。这是一个XCode/Swift错误吗?

好的,让我们重新表述一下,以澄清问题:

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

对我来说,这显然是一个bug。

Swift中的数组现在有了新的init[Element],为什么需要使用“
作为元素[]
”?我建议使用Swift的原生“Array”类,除非您直接处理Objective-C代码。然后,这就不成问题了,因为你可以使用map之类的东西,我相信它们已经被烘焙到API中了。我正在初始化objective-CNS[Mutable]数组对象并将它们转换为swift数组。如果我试图强制转换为'as[Element',编译器似乎不知道我在说什么。对于jtbandes,如果我不使用'as Element[],那么swift就不知道对象的类型是什么,要么我必须将它们用作anyobject,要么我需要在循环中将它们强制转换为Element对象。对于Christian Di Lorenzo来说,上面的代码只是一个简化,我现在一直在处理这些对象类型
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