从AnyObject(NSString)获取String

Dai*_*jan 17 nsstring ios swift

我正在读一个plist键(NSArray和n NSDictionaries):

    let regionsToMonitor = NSBundle.mainBundle().infoDictionary["Regions"] as Array<Dictionary<String,AnyObject>>
Run Code Online (Sandbox Code Playgroud)

现在我迭代它:

    for regionToMonitor in regionsToMonitor {
Run Code Online (Sandbox Code Playgroud)

现在我想得到regionToMonitor的uuidString

在ObjC: NSString *uuidString = regionToMonitor[@"uuidString"];

在swift我尝试: let uuidString = regionToMonitor["uuid"]!.stringValue;

以上编译但字符串始终nil处于快速状态.regionToMonitor["uuid"]没有时使用!.stringValue可以正常工作println

我如何在这里获得有效的Swift.String?

我想把它传递给NSUUID!


我也试过了

let uuidString:String = regionToMonitor["uuid"]
=> AnyObject不能转换为String

let uuidString = regionToMonitor["uuid"] as String
=>找不到接受提供的参数的'下标'的重载

let uuidString = regionToMonitor["uuid"];
>'AnyObject?' 不能隐含地向下转换为'String'; 你的意思是用'as'强迫低垂?

Dai*_*jan 44

我结束了丑陋的界限:

var uuidString:String = regionToMonitor["uuid"] as! String
Run Code Online (Sandbox Code Playgroud)

没有警告,没有错误,没有运行时错误


Ami*_*tay 11

我发现这对我有用

var uuidString: String? = regionToMonitor["uuid"] as AnyObject? as? String
Run Code Online (Sandbox Code Playgroud)

编辑:这是一个较旧的swift版本的答案

请使用接受的答案.