我正在使用两个数组:
var facebookFriends: [FacebookFriend] = []
var friendsToInvite: [FacebookFriend]!
第一个数组包含所有Facebook好友,第二个数组包含在不同ViewController中选择的对象FacebookFriend
。
两个数组都在ViewController中正确实例化。
在-tableView:cellForRowAtIndexPath
委托方法中,如果来自facebookFriends
数组的Facebook好友包含在friendsToInvite
数组中,我想更改单元格视图。
为了实现这一目标,我尝试了以下方法:
if(friendsToInvite.contains(facebookFriends[indexPath.row])) {
// Code to change the view of the cell
}
但是我收到以下错误:
无法下标'[FacebookFriend]'类型的值。
有没有其他方法可以检查数组中是否包含此对象?
答案 0 :(得分:1)
您的FacebookFriend
课程必须符合Equatable
协议才能使contains()
方法有效。这个protocol允许比较对象。
让我们使用简化的facebookFriend
类:
class facebookFriend {
let name:String
let lastName:String
init(name:String, lastName:String) {
self.name = name
self.lastName = lastName
}
}
您可以非常轻松地符合Equatable
协议:
extension facebookFriend: Equatable {}
func ==(lhs: facebookFriend, rhs: facebookFriend) -> Bool {
let areEqual = lhs.name == rhs.name &&
lhs.lastName == rhs.lastName
return areEqual
}
}
答案 1 :(得分:-1)
您可以使用
制作过滤器let friend:FacebookFriend = facebookFriends[indexPath.row]
var filteredArray = friendsToInvite.filter( { (inviteFriend: FacebookFriend) -> Bool in
return inviteFriend.userID == friend.userID
});
if(count(filteredFriend) > 0){
// friend exist
}
else{
// friend does not exist
}