2015-12-11 78 views
1

我想在我的Swift項目中使用我的Wordpress服務器的值。我以JSON格式獲取信息。我想要的值是由wordpress服務器上的「高級自定義字段」創建的。不能使用Wordpress的高級自定義字段值

我從另一個視圖控制器加載並使用此代碼加載:

let nummer = NSUserDefaults.standardUserDefaults().valueForKey("nummer") 
print(nummer) 

然後我得到這樣的結果:

{ 
    attachments =  (
    ); 
    author =  { 
     description = ""; 
     "first_name" = ""; 
     id = 1; 
     "last_name" = ""; 
     name = admin; 
     nickname = admin; 
     slug = admin; 
     url = ""; 
    }; 
    categories =  (
    ); 
    "comment_count" = 0; 
    "comment_status" = open; 
    comments =  (
    ); 
    content = "<p>text</p>\n"; 
    "custom_fields" =  { 
     latitude =   (
      "22.324432" 
     ); 
     longitude =   (
      "40.233221" 
     ); 
    }; 
    date = "2015-12-11 08:12:31"; 
    excerpt = "<p>text</p>\n"; 
    id = 37; 
    modified = "2015-12-11 08:12:31"; 
    slug = "test-2"; 
    status = publish; 
    tags =  (
    ); 
    title = test; 
    "title_plain" = test; 
    type = post; 
    url = "http://localhost:8080/wordpress/2015/12/11/test-2/"; 
} 

拿到冠軍我用這個代碼:

let dict = nummer!["title"] as? String 
print(dict) 

並得到這個結果: 可選(「te ST「)

我用這個代碼來獲取經度值:

let dict = nummer!["custom_fields"] 
let longitude = dict!!["longitude"] 
print(longitude) 

結果: 可選(( 」40.233221「 ))

現在我想將它轉化成雙倍。但它返回零:

let longitude = dict!!["longitude"] as? Double 
print(longitude) 

結果:

爲什麼它返回nil,而不是雙重價值?

回答

1

當您使用as?時,您試圖將展開的值向下轉換爲Double,但它不是Double這是一個Array

if let longitudeArray = dict!!["longitude"] as? Array<String> { 
    if let longitude = Double(longitudeArray[0]) { 
     print(longitude) 
    } 
} 
+0

我想你的代碼,然後我後,使用打印(經度)。但沒有任何反應。 –

+0

有趣。看起來你沒有一個字符串,然後在'字典!! [「經度」]''。如果你在這行'let long = dict !! [「longitude」]之後設置了一個斷點,那麼'longitude'在調試器中是什麼類型? –

+0

我得到這個結果:(AnyObject ?!)$ R0 =一些{instanceoftype = 0x00007fb62350a380 - > 0x00000001066e2ae0(void *)0x00000001066e2b08:__NSCFArray } –

0

因爲這個變量是String而不是Double。你必須把它轉換

if let longitudeString = dict!!["longitude"] as? String { 
    let longitude = Double(longitudeString) 
} 

if let longitudeString = dict!!["longitude"] as? String { 
    let longitude = longitudeString.doubleValue 
} 
+0

我相信你的第二個需要你向下傾向'NSString',而不是'String'。無論如何,最好使用第一個。 –

+0

我嘗試了他們兩個,然後我使用打印(經度),但它不打印任何東西。 –

相關問題