问题是我无法使用我认为使用swiftyJSON解析JSON文件的正确代码来填充数组。
我不确定发送请求的过程是否正确。
JSON格式:这应该简化为它真正代表的内容:带有“字符串”键和字典数组值的字典。然后是一个字符串值的字符串键。然后是一个字符串,其值为我需要的字符串。
{
"string1" : [
{ "string2" : {
"string3" : "DataINeed"
}
}
]
}
我的代码
func downloadSecondJSONData(completed: DownloadComplete)
{
let API_ServerKey = "My API Key"
let URL_Search = "URL Address"
let urlString = "\(URL_Search)"
let url = NSURL(string: urlString)!
Alamofire.request(.GET,url).responseJSON { (response) -> Void in
switch response.result
{
case .Success:
if let value = response.result.value
{
let json = JSON(value)
if let data = json["string1"]["string2"]["string3"].string
{
self.dataArray.append(data)
}
}
case .Failure(let error):
print(error)
}
completed()
}
}
func printData()
{
print(self.dataArray.count)
}
我如何尝试调用方法
downloadFirstJSONData { () -> () in
self.randomMethod() //data i use with the downloadFirstJSONData is required to use in the downloadSecondJSONData
self.downloadSecondJSONData({ () -> () in
self.printData() //check if data has been stored
})
}
答案 0 :(得分:1)
看起来你没有在第一本字典后访问数组。
我想访问第一个对象的安全方法是:
if let array = json["string1"].array,
let firstDict = array.first,
let data = firstDict["string2"]["string3"].string {
self.dataArray.append(data)
}
但我认为使用SwiftyJSON你也可以改变你所拥有的东西:
if let data = json["string1"][0]["string2"]["string3"].string {
self.dataArray.append(data)
}