NSDictionary 在检索信息时返回一个可选的整数

NSDictionary returning an optional integer when retrieving information

我有这样声明的字典:

var friendLetterCount:NSDictionary = NSDictionary(dictionary: [String:Int]())

而且我显然想检索字典中键的信息,但是当我这样做时,它只有 returns 个可选整数,我该如何做到这一点才能使它们仅为整数?

我这样检索:

friendLetterCount["a"]

当我将它打印到控制台时它说

optional(1)

我试过用我能想到的所有方式转换它,但它总是给我一个错误提示

'(NSObject, AnyObject)' is not convertible to 'Int'

如有任何建议,我们将不胜感激。

Optional(1)值只是表示该值是一个可选的swift类型。

您可以使用 ! 运算符从可选值中解包值。

let a = friendLetterCount["a"]! as Int
println(a)

a 将是展开后的值。

您还可以使用 optional binding 在展开时检查 nil。

if let a = friendLetterCount["a"] as? Int
{
    println(a)
}

请从 Apple 的 Swift 书中了解 Optionals。

你也可以阅读这样的文章 http://www.appcoda.com/beginners-guide-optionals-swift/

class AppModel: NSObject {

private  var _user_id:String?

final func serviceResult(results:NSObject) {

var data = results as? NSDictionary
_user_id = String (data?.objectForKey("userId") as! Int)
 println("user id \(_user_id)")

}

}

Note: AppMOdel is a NSObject class, results is the parsed JSON DATA, data- NSDictionary, _user_id is a private variable.

It return the print as : 

user id Optional("8")

如果您不确定值是否始终为整数(通常 String/Intger 会发生这种情况),最安全的方法是:

if let count = friendLetterCount["a"]?.integerValue  {

}