我编辑了这个问题,专注于最后一个错误。这是我的代码中的最后一个错误:一个数组扩展,用于按值删除对象
这似乎与这篇文章有关:
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
的详细信息。
答案 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
}
}