2015-12-11 25 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

我尝试了他们两个,然后我使用打印(经度),但它不打印任何东西。 –

相关问题