作为一项编程练习,我写了一个小程序,将MySql数据从web传输到iPhone。在服务器端,我编写了php脚本来获取脚本返回的json数据。
在xcode中,我有:
在Xcode控制台中,我看到了以下内容:
当我将jsonString传递给convertToDictionary(text:)函数时。
在控制台中,我收到一个错误消息:"不能将类型为 '__NSSingleObjectArrayI' (0x10369bdb0) 的值强制转换为类型 'NSString' (0x1004eac60)"。
但是如果我硬编码JSON字符串并将其传递给convertToDictionary(text:)函数,则不会出现这个错误。
在xcode中,我有:
[code]
.
.
.
let jsonString = try? JSONSerialization.jsonObject(with: data!, options: [])
print(jsonString!)
.
.
.
[/code]
在Xcode控制台中,我看到了以下内容:
[code]
(
{
Address = "1 Infinite Loop Cupertino, CA";
Latitude = "37.331741";
Longitude = "-122";
Name = Apple;
}
)
[/code]
I have a function
[code]
func convertToDictionary(text: String) -> [String: Any]? {
if let data = text.data(using: .utf8) {
do {
return try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any]
} catch {
print(error.localizedDescription)
}
}
return nil
}
[/code]
当我将jsonString传递给convertToDictionary(text:)函数时。
[code]
let dict = convertToDictionary(text: jsonString as! String)
[/code]
在控制台中,我收到一个错误消息:"不能将类型为 '__NSSingleObjectArrayI' (0x10369bdb0) 的值强制转换为类型 'NSString' (0x1004eac60)"。
但是如果我硬编码JSON字符串并将其传递给convertToDictionary(text:)函数,则不会出现这个错误。
[code]
let hardCodedStr = "{\"Address\":\"1 Infinite Loop Cupertino, CA\",\"Latitude\":\"37.331741\",\"Longitude\":\"-122\",\"Name\":\"Apple\"}"
let dict = convertToDictionary(text: hardCodedStr)
print(dict!)
[/code]
它工作得非常好。为什么呢?谢谢。
jsonString
已经是从JSON字符串转换而来的字典。 - vadian