gpt4 book ai didi

ios - 在 NSuserDefault 中获取 json 结果并在 Swift 中显示 MapKit 中注释的结果

转载 作者:行者123 更新时间:2023-11-30 13:53:00 30 4
gpt4 key购买 nike

我想从 json 获取结果并将结果保存在 NSUserDefault 中,然后我想使用 NSUserDefault 中保存的 json 数组在 MapKit 上添加多个注释。目前为了获取 json 结果,我使用这个:( Swift 2.x )

         let defaults = NSUserDefaults.standardUserDefaults()

//Get user content//
let url = NSURL(string: "http://www.example.com/folder/coordonate.php")
let request = NSMutableURLRequest(URL: url!)

// modify the request as necessary, if necessary

let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in

if data == nil {
print("request failed \(error)")
return
}

do {
if let json = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? NSDictionary {
print(json)
// print : {tab = "[london,paris]";}


var test = json["tab"]

defaults.setObject(test, forKey: "annotation") as? NSArray



}
} catch {
print(error)
}
}
task.resume()
NSUserDefaults.standardUserDefaults().synchronize()

为了在另一个 View 中获取 NSUserdefault,我尝试以下代码:

  let defaults = NSUserDefaults.standardUserDefaults()

let test = NSUserDefaults.standardUserDefaults().objectForKey("annotation") as! NSArray
map.addAnnotations(test as! [MKAnnotation])
print("We saved this data: \(test)")
//No print, error before

但是当我尝试使用此方法时出现错误。

Could not cast value of type '__NSCFString' (0x1971a3958) to 'NSArray' (0x1971a4308).

最佳答案

如果实际返回的“tab”属性 JSON 是:

[london, paris]

那么该属性就不是数组。您正在寻找的是:

['london', 'paris']

但此外,我可以告诉您,即使“tab”属性是格式正确的 JSON 数组,您的代码在尝试将其转换为 [MKAnnotation] 时也会失败。这是因为 iOS 的 JSON 库不知道如何将通用 NSArray 转换为它的类型等效项。 NSJSONSerialization documentation表示 JSON 将转换成的所有类型。最好的情况是“tab”属性是一个与 MKAnnotation 结构相同的项目数组,并且正在转换为一个字典数组,您必须自己将其转换为 MKAnnotation。但当前提供的 JSON 计算结果为字符串。根据我建议的更改,它将改为评估字符串数组 - 仍然不足以创建 MKAnnotation。

关于ios - 在 NSuserDefault 中获取 json 结果并在 Swift 中显示 MapKit 中注释的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34027548/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com