2016-01-19 2 views
0

Я использую два массива:Swift проверить, если массив объектов содержит объект другого массива

var facebookFriends: [FacebookFriend] = [] 

var friendsToInvite: [FacebookFriend]! 

Первый массив содержит все друзья в Facebook, а второй содержит объекты FacebookFriend, которые выбраны в другом ViewController.

Оба массива создаются правильно в ViewController.

В методе делегата -tableView:cellForRowAtIndexPath Я хочу изменить вид ячейки, если друг Facebook из массива facebookFriends содержится в массиве friendsToInvite.

Для того, чтобы достигнуть того, я попытался следующие:

if(friendsToInvite.contains(facebookFriends[indexPath.row])) { 
    // Code to change the view of the cell 
} 

Но я получаю следующее сообщение об ошибке:

Cannot subscript a value of type '[FacebookFriend]'.

есть ли другой способ, чтобы проверить, если этот объект содержится в массив?

+0

Каких значения, хранящегося в '[FacebookFriend]'? – technerd

+0

Я создал свой собственный класс '' FacebookFriend и я использую следующий конструктор для того, чтобы создать объект: 'инициализации (facebookId: String, facebookUsername: String, profilePicture: NSData) { self.facebookId = facebookId себя .facebookUsername = facebookUsername self.profilePicture = profilePicture } ' – PV169

ответ

1

Ваш класс FacebookFriend должен соответствовать протоколу Equatable, чтобы иметь способ работы . Это 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 
    } 
} 
+0

Это сработало !!!! Спасибо !!! : D: D – PV169

-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 
} 
Смежные вопросы