如何在NsmutableArray中检查包含字符串值

时间:2016-03-08 06:37:07

标签: ios swift nsmutablearray

我得到一些包含一些信息的回复,我在NSMutableArray中以字典格式存储值,例如

{name : daniel, email : xxx.com},{name: daniel, email : yay.com},{name : daniel, email : zzz.com} {name: Annie, email : annie.com},{name: George, email : ger.com}

我有两个标签名称和电子邮件。当我按下标签动作时,我显示了所有用户名,我选择名称为" daniel"

现在我要去第二个名为Email Action的标签,因为我只想要电子邮件列表" daniel"它包含三个邮件,我必须在tableview中显示

这里我尝试了这段代码,但没有为我工作

if NameLabel.text!.containsString(self.NameList.valueForKey("Name") as! String){
             NSLog("success")
        }else{
            NSLog("fail")
        }

我的输出日志:

Could not cast value of type '__NSArrayI' (0x1059da8b0) to 'NSString' (0x103a50b20).

2 个答案:

答案 0 :(得分:1)

试试这个

let Namelist = [["name" : "daniel", "email" : "abc@gmail.com"]]

let data = Namelist.filter{($0 as [String:String])["name"]!.lowercaseString.containsString("daniel".lowercaseString)}.map { x in return x["email"]!}
print(data)

我在游乐场测试了它

enter image description here

答案 1 :(得分:1)

你有一个字典数组,这意味着你需要循环遍历数组,然后检查每个字典是否包含键的名称' name'等于你的nameLabel文本,然后从同一个字典中获取电子邮件。

let nameList : NSMutableArray = [["name":"daniel","email":"daniel@test"], ["name":"martin","email":"martin@test"], ["name":"john","email":"john@test"]]

...
let nameLabel = UILabel()
nameLabel.text = "daniel"
...

for list in nameList {

    if let dic = list as? [String: String] {


        if dic["name"] == nameLabel.text {
            let email = dic["email"]
            print("\(email)")
        }
    }
}