2016-03-08 41 views
-1

我让其中包含的一些信息,我储值在字典格式的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} 

一些回应,我有两个标签,姓名和电子邮件。当我按标签行动我显示所有的用户名在我选择名称为“丹尼尔”

现在我要第二个标签称为电子邮件行动,我只想要“丹尼尔”的电子邮件列表其中包含三个邮件我必须在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). 
+0

请不要编辑您的问题,包括一个新的问题。相反,创建一个新问题。 – Matt

回答

1

试试这个

let Namelist = [["name" : "daniel", "email" : "[email protected]"]] 

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

+0

可以有点清楚。它不工作 – user3458924

+0

你得到什么错误? – techloverr

+0

我已更新大小写敏感问题的答案 – techloverr

1

你有一个字典数组,这意味着,你可以通过阵列需要循环,然后检查是否每个字典包含该键的值为“名称',它等于你的nameLabel文本,然后从同一个字典中获取电子邮件。

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

... 
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)") 
     } 
    } 
}