我正在尝试在Swift项目中使用我的Wordpress服务器中的值。我以JSON格式获取信息。我想要的值由"高级自定义字段"创建。在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)
得到这个结果: 的可选(&#34;测试&#34)
我使用此代码获取经度值:
let dict = nummer!["custom_fields"]
let longitude = dict!!["longitude"]
print(longitude)
结果: 的可选(( &#34; 40.233221&#34; ))
现在我想把它转换为双倍。但它返回nil:
let longitude = dict!!["longitude"] as? Double
print(longitude)
结果: nil
为什么它返回nil而不是double值?
答案 0 :(得分:1)
当您使用as?
时,您试图将展开的值向下转换为Double
,但它不是Double
它是Array
if let longitudeArray = dict!!["longitude"] as? Array<String> {
if let longitude = Double(longitudeArray[0]) {
print(longitude)
}
}
答案 1 :(得分: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
}