2015-08-26 84 views
1

餘米試圖創建可以刪除物品,如下面的函數:從PFObject陣列刪除特定PFObject

var array = [23,36,12,45,52,63] 
removeItem(12,array) 
result : array = [23,36,45,52,63] 

我米試圖實現這種對PFObject但我爲得到錯誤:

public func removeObjectFromArray(user:PFObject,array:[PFObject]) -> [PFObject]{ 

    for var i = 0;i < array.count ; i++ { 
     if array[i].objectId == user.objectId{ 
      array.removeAtIndex(i) 
      return array 
     } 
    } 
} 

那我米得到的錯誤:

Immutable type of [PFObject] only ha mutating members named 'removeAtIndex' 

的任何解決方案呢?

謝謝

+0

的NSMutableArray提供此https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSMutableArray_Class/#//apple_ref/occ/instm/NSMutableArray/removeObjectsInArray: – danh

回答

0

嘗試這樣做:

public func removeObjectFromArray(user: PFObject, array: [PFObject]) -> [PFObject] { 
    var a = array 
    for i in 0..<a.count { 
     if a[i].objectId == user.objectId { 
      a.removeAtIndex(i) 
      return a 
     } 
    } 
    return a 
} 

的問題是,你試圖修改函數的參數。

您也可以使功能參數可變加入var關鍵字,這裏是相關的問題:Swift make method parameter mutable?

+0

這會導致悲傷,因爲結束索引在循環運行時發生變化。 – danh

+0

@danh很好用,因爲我不會在刪除對象後進行下一次迭代。 –

0

我不是一個開發商迅速,但我從來不喜歡刪除在一個循環的對象。這是我會怎麼做(僞代碼):

var a = empty array 
for i in (0 -> length of array) { 
    if array[i].objectId != user.objectId { 
     a.addObject(array[i]) 
    } 
} 
return a