You can make this work with a double downcast, first to
In later versions of Swift (at least 1.2), the compiler will complain about
NSArray
, then to [String]
:var strings = myObjcObject.getStrings() as NSArray as [String]
Tested in a Playground with:import Foundation
var objCMutableArray = NSMutableArray(array: ["a", "b", "c"])
var swiftArray = objCMutableArray as NSArray as [String]
Update:In later versions of Swift (at least 1.2), the compiler will complain about
as [String]
. Instead you should use an if let
with a conditional downcast as?
:import Foundation
var objCMutableArray = NSMutableArray(array: ["a", "b", "c"])
if let swiftArray = objCMutableArray as NSArray as? [String] {
// Use swiftArray here
}
If you are absolutely sure that your NSMutableArray
can be cast to [String]
, then you can use as!
instead (but you probably shouldn't use this in most cases):import Foundation
var objCMutableArray = NSMutableArray(array: ["a", "b", "c"])
var swiftArray = objCMutableArray as NSArray as! [String]
No comments:
Post a Comment