我正在使用条形码扫描仪使用 google 图书 api 获取扫描图书的数据。我成功调用了 API 并返回了一个 JSON 对象。
我正在尝试获取遵循路径的书名items.volumeInfo.title
。
当我在 API 返回的 JSON 对象上调用 valueForPath 并尝试打印它(标题)时,我最终打印了:
可选((“魔龙的狂舞”))
我似乎无法弄清楚如何从打印的可选中实际获取字符串。我试过as! String
and 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)
}
})
}