2015-11-04 80 views
1

我編輯過這個問題,重點關注最後一個錯誤。這是我的代碼中的最後一個錯誤:數組擴展通過值刪除對象Swift2:按數值刪除對象的數組擴展名 - Foundation

這似乎是與此相關的帖子太:

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」

的功能是通過Array+RemoveObject.swift文件,該文件指出調用框架Foundation

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

我不知道我的工作區被正確理解,他需要參照這個快捷文件中查找確定的removeObject的詳細信息。

+0

確保包括所有相關的代碼,以*幫助別人幫你* - 現在正在給你造成錯誤的片不包括在你的代碼片段。錯誤是說你不能將'PFQueryArrayResultBlock'強制轉換爲'updateList'。我無法在包含的代碼中的任何位置找到'updateList'的定義,因此很難提供幫助。另一個錯誤說未解析的標識符「removeObject」是一樣的。 removeObject定義在哪裏?編譯器找不到它,這就是導致錯誤的原因 – Russell

+0

你是完全正確的,並感謝你的評論。我查找了'updateList',發現它指的是AnyObject而不是PFObject。我做了改變,並解決了三個錯誤! 我還有最後一個。它指的是框架「基礎」,其中: '進口基金會 延伸RangeReplaceableCollectionType其中Generator.Element:Equatable { //移除第一收集元件是等於給定'object': 突變FUNC的removeObject(對象: Generator.Element){ 如果讓指數= self.indexOf(對象){ self.removeAtIndex(指數) } } }' – Jeremy

+0

一個建議的版本Swift2是: '擴展陣列{ 突變FUNC的removeObject (對象:T) - >布爾{ var index:Int? for(idx,objectToCompare)in self.enumerate(){ if letCompareCompareToCompare as? Ť{ 如果toCompare ==對象{ 指數= IDX 斷裂 } } } 如果(指數!=無){ self.removeAtIndex(指數!) 還真 }其他{ 返回false }} } ' 但如何編輯代碼 – Jeremy

回答

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

非常感謝! – Jeremy