【发布时间】:2015-11-13 11:20:27
【问题描述】:
我正在使用条形码扫描仪通过 google 图书 api 获取扫描图书的数据。我成功调用了 API 并返回了一个 JSON 对象。
我正在尝试获取遵循路径items.volumeInfo.title 的书名。
当我在 API 返回的 JSON 对象上调用 valueForPath 并尝试打印它(标题)时,我最终会打印:
可选(( 《与龙共舞》 ))
我似乎无法弄清楚如何从打印的可选中实际获取字符串。我尝试了as! String 和jsonResult.valueForKeyPath("items.volumeInfo.title")!,但第一个只是向我抱怨,第二个只是删除了可选的括号和外部括号。
func getBookInfo(isbn: String) {
var url: String = "https://www.googleapis.com/books/v1/volumes?q=isbn:" + isbn;
var request: NSMutableURLRequest = NSMutableURLRequest()
request.URL = NSURL(string: url)
request.HTTPMethod = "GET"
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue(), completionHandler:{ (response:NSURLResponse!, data: NSData!, error: NSError!) -> Void in
var error: AutoreleasingUnsafeMutablePointer<NSError?> = nil
let jsonResult: NSDictionary! = NSJSONSerialization.JSONObjectWithData(data, options:NSJSONReadingOptions.MutableContainers, error: error) as? NSDictionary
if (jsonResult != nil) {
println(jsonResult.valueForKeyPath("items.volumeInfo.title"))
//self.json.setValue(jsonResult.valueForKeyPath("items.volumeInfo.title")!, forKey: "title")
} else {
GlobalConstants.AlertMessage.displayAlertMessage("Error fetching data from barcode, please try again.", view: self)
}
})
}
【问题讨论】:
-
println(jsonResult.valueForKeyPath("items.volumeInfo.title") as! String)有什么用?
标签: ios json swift kvc google-books