Swift2:数组扩展,用于按值删除对象 - Foundation

时间:2015-11-04 22:06:40

标签: swift parse-platform swift2

我编辑了这个问题,专注于最后一个错误。这是我的代码中的最后一个错误:一个数组扩展,用于按值删除对象

这似乎与这篇文章有关:

Array extension to remove object by value

但我被卡住了:x

func cell(cell: FriendSearchTableViewCell, didSelectUnfollowUser user: PFUser) {
    if var followingUsers = followingUsers {
        ParseHelper.removeFollowRelationshipFromUser(PFUser.currentUser()!, toUser: user)
        // update local cache
        removeObject(user, fromArray: &followingUsers)
        self.followingUsers = followingUsers
    }

//对于' removeObject'引发错误:

  

使用未解析的标识符' removeObject'

该函数通过Foundation文件调用框架Array+RemoveObject.swift,该文件指出:

import Foundation

// Thanks to Martin R: https://stackoverflow.com/questions/24938948/array-extension-to-remove-object-by-value

extension Array where Element : Equatable {
  // Remove first collection element that is equal to the given `object`:
mutating func removeObject(object : Generator.Element) {
        if let index = self.indexOf(object) {
            self.removeAtIndex(index)
        }
    }
}

我不确定我的工作区是否正确理解他需要引用此swift文件来查找已识别的removeObject的详细信息。

1 个答案:

答案 0 :(得分:0)

PFUser不符合Equatable协议,因此您的扩展程序不适用。但是通过其用户名识别PFUser。您可以使用filter解决问题,无需扩展名:

func cell(cell: FriendSearchTableViewCell, didSelectUnfollowUser user: PFUser) {
    if var followers = followingUsers {
        ParseHelper.removeFollowRelationshipFromUser(PFUser.currentUser()!, toUser: user)
        // update local cache
        followers = followers.filter { $0.username != user.username } 
        self.followingUsers = followers
    }
}