我得到一些包含一些信息的回复,我在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).
答案 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)
我在游乐场测试了它
答案 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)")
}
}
}