如何在swift 3中从字典中获取数组

Posted

技术标签:

【中文标题】如何在swift 3中从字典中获取数组【英文标题】:how to get array from dictionary in swift 3 【发布时间】:2016-12-01 11:51:34 【问题描述】:

我不明白如何从字典中获取数组,我已经尝试过这段代码,但我只想获取数组的内容和类型

这是我的数组


    wsResponse =     

  aarti =(
  
        content = "";
        identifier = "slok_one";
        title = 1;
        type = "\U092d\U0915\U094d\U0924\U093e\U092e\U0930";
    ,
            
        content = "";
        identifier = "slok_two";
        title = 2;
        type = "\U092d\U0915\U094d\U0924\U093e\U092e\U0930";
    ,
            
        content = "";
        identifier = "slok_three";
        title = 3;
        type = "\U092d\U0915\U094d\U0924\U093e\U092e\U0930";
    

 
 );
 ;

这是我的代码

Alamofire.request(url, method: .get, parameters: nil, encoding: JSONEncoding.default)
        .responseJSON  response in

            if let status = response.response?.statusCode 
                switch(status)
                case 201:
                    print("example success")
                default:
                    print("error with response status: \(status)")
                
            

            //to get JSON return value
            if let array = response.result.value
            
                let JSON = array as! NSDictionary
                print("\(JSON)")


                let response = JSON["wsResponse"] as! NSDictionary
                let data  = response["aarti"]
            
 

我想要这个数组,比如内容、标题、类型

提前致谢

【问题讨论】:

对不起它的字典,但我想要像内容、标题、类型这样的数组,我可以正确地在字典中得到结果 @EricAya 这是我的数组不是结果它是我真正的数组,我想要这个数组内容 array as! NSDictionary 非常非常混乱! @vadian 对不起,我的名字是我的错误 【参考方案1】:

根据 JSON,这将打印 aarti 数组中的所有值:

if let JSON = response.result.value as? [String:Any]    
   if let response = JSON["wsResponse"] as? [String:Any],
      let aarti = response["aarti"] as? [[String:Any]] 

         for item in aarti 
            let content = item["content"] as! String
            let identifier = item["identifier"] as! String
            let title = item["title"] as! Int
            let type = item["type"] as! String
            print(content, identifier, title, type)
        
   

在 Swift 中基本上不要使用NSDictionary / NSArray

如果要将所有 content 值放入数组中,请使用 flatMap。该行可以替换整个重复循环。

 let contentArray = aarti.flatMap  $0["content"] as? String 

PS:如果您要从值创建多个数组,请不要这样做:使用自定义结构或类

【讨论】:

谢谢@vadian 还有一个问题如何制作这样的数组,如 contentArray(数组中的所有内容值)【参考方案2】:

如果有人想要获取数组字典并在 tableview 中使用它 声明:

var list:[Any] = []

和初始化:

self.list =  (self.ListDic?["data"] as! NSArray!) as! [Any]

并使用:

let dictObj = self.list[indexPath.row] as! NSDictionary
print("object value: ",dictObj["text"] as! String)

【讨论】:

最好提出一个新问题,但首先要努力寻找可能已经有你答案的类似问题。

以上是关于如何在swift 3中从字典中获取数组的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 中从文件夹中获取 UIImage 数组?

在 Swift 3 和 Xcode 8 中从嵌套字典中获取值的问题

在 Swift 3 中从数组中播放随机声音

IOS - 如何在 Swift 3 中从 JSON 中捕获动态数组维度

swift 3中从数组到字典的JSON解析问题

如何在swift中获取数组中字典的值