gpt4 book ai didi

ios - 如何在 swift 3 中将 NsArraym 设置为 NSString

转载 作者:行者123 更新时间:2023-11-29 00:17:04 25 4
gpt4 key购买 nike

我一直在尝试将 json 返回值设置为字符串,但不知何故它显示

 "Could not cast value of type '__NSArrayM' (0x10ecdae00) to 'NSString' (0x10e2e6c60)."

我需要这个值

print(myBoard["marketing_refresult"] as Any)

在字符串中。检查下面的代码`

func getData()
{
//fetch details
let myUrl = URL(string:"http://kumbhkaran.co.in/iosAdmin/fill_survey_report.php")

var request = URLRequest(url: myUrl! as URL)
request.httpMethod = "POST"

let task = URLSession.shared.dataTask(with: request) { (data: Data?, response: URLResponse?, error: Error?) in

DispatchQueue.main.async
{
if error != nil{
print("error is\(String(describing: error))")
}
do{

let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as? [String: Any]

if let parseJSON = json {

//var msg : String!

//getting json response

//let myBoard: NSArray = parseJSON["success"] as! [Any] as NSArray
let myBoard: NSDictionary = parseJSON["success"] as! Dictionary<String,AnyObject> as NSDictionary

print("--------------------------")
print(myBoard["marketing_refresult"] as Any)

self.markRef = (myBoard["marketing_refresult"] as Any as! String)//this line gives the warning for NSarraym to NSString conversion
print(self.markRef)
}
}
catch {
print(error)
}
}
}
task.resume()

//return markref1
}

最佳答案

首先,永远不要转换一个好的原生类型 Dictionary<String,AnyObject> (又名 [String:AnyObject] )到一个糟糕的无类型 NSDictionary .不要使用 NSDictionary / NSArray在 Swift 中。顺便说一下,JSON 字典是 [String:Any]在 Swift 3 中。

随便写

let myBoard = parseJSON["success"] as! [String:Any]

第二个错误发生的原因是键 marketing_refresult 的值是一个字典数组(而不是字符串),您可以使用重复循环来迭代该数组:

if let refResults = myBoard["marketing_refresult"] as? [[String:Any]] { 
for result in refResults {
print(result)
}
}

获取键 marketing_ref 的所有值作为[String]

if let refResults = myBoard["marketing_refresult"] as? [[String:String]] { 
let valueArray = refResults.flatMap { $0["marketing_ref"] }
}

请仔细阅读JSON,它很简单。只有两种集合类型:数组 ( [] ) 和字典 ( {} )。

而且——一如既往——.mutableContainers在 Swift 中没有意义,省略 options参数。

PS:我怀疑此 URL 是否需要 POST 请求。

关于ios - 如何在 swift 3 中将 NsArraym 设置为 NSString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45101226/

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