2
A
答えて
6
はあなたがテストし、あなたがそれらを使用する前に、任意のOptional
をアンラップしたいこの問題を解決する方法を
let json = try NSJSONSerialization.JSONObjectWithData(data!, options: .AllowFragments)
if let blogs = json["profile_image_url"] as? String {
userImage = blogs//json["profile_image_url"] as! String
print("USER IMAGE:\(userImage)")
怒鳴るです。これには、as?
のようなキャストが含まれます。これを避けることができる場合は、予期しない実行時のクラッシュを引き起こすため、強制アンラッピングまたは明示的にアンラップされたOptional
(!
とマークされています)を使用しないでください。
import Foundation
// create test data
let testJson = ["profile_image_url": "http://some.site.com/"]
var data: NSData?
// convert to NSData as JSON
do {
data = try NSJSONSerialization.dataWithJSONObject(testJson, options: [])
} catch let error as NSError {
print(error)
}
// decode NSData
do {
// test and unwrap data
if let data = data {
let json = try NSJSONSerialization.JSONObjectWithData(data, options: .AllowFragments)
// test and unwrap cast to String
if let userImage = json["profile_image_url"] as? String {
print("USER IMAGE:\(userImage)")
}
}
} catch let error as NSError {
print(error)
}
+1
待つようにして、もし 'let XXX = json [" profile_image_url "]を?文字列 '、OPのように。違いは何ですか? –
+1
主な相違点は、私は、オプションではなかったすべてのオプションのアンラッピングとエラーを処理していることです。コードがそのポイントに達すると、すべてが有効でなければならず、問題は発生しません。 – ColGraff
関連する問題
単なる文字列としてこの 'JSON [「profile_image_url」]のようにそれを作る?' – HardikDG
可能な限り力-アンラップを避け@Pyro、それはバグや実行時のクラッシュにつながります。 – ColGraff
@ luk2302その仕事は完璧です。私は他の問題があります コメント= unwrapResults.itemsとして!配列 エラーは、項目のあいまいな使用です。 –