我修改了这个问题,把重点放在最后一个错误上。这是我代码中的最后一个错误:按值移除对象的数组扩展
似乎也和这篇文章有关:
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的详细信息。

最佳答案

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
    }
}

10-07 23:31