Swift 2:尝试使用indexOf查找时出错

时间:2016-01-17 21:21:24

标签: ios arrays swift

在全局变量部分我有这个声明

var friends:NSArray = NSMutableArray() // because i use them to share data into two segues

这是我的tableView函数的起始代码:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

    self.tableView.deselectRowAtIndexPath(indexPath, animated: true)

    let cell:UITableViewCell = tableView.cellForRowAtIndexPath(indexPath)!
    let user:PFUser = allUsers.objectAtIndex(indexPath.row) as! PFUser

    if(isFriend(user)) {
        // remove friend

        // 1) Remove the Checkmark
        cell.accessoryType = .None

        // 2) Remove from Array list of friends

        for friend in self.friends {
            if friend.objectId == user.objectId {
                if let foundIndex = friends.indexOf(friend) {

                    //remove the item at the found index
                    self.friends!.removeAtIndex(foundIndex)
                }
            }
        }

        // 3) Remove from backend

    }
...
}

我尝试在朋友列表中找到被点击的朋友的索引,以添加或删除朋友到数组"朋友"用:

if let foundIndex = friends.indexOf(friend)

我有一行红色警告:NSArray类型的值没有成员indexOF

4 个答案:

答案 0 :(得分:3)

NSArray或NSMutableArray与Swift本机数组(具有indexOf功能)不同。

尝试做:

let foundIndex = friends.indexOfObject(friend)
if foundIndex != NSNotFound {
   // do something with the found index...
}

答案 1 :(得分:2)

如果您使用原生Array类型

,则可以让您的生活更轻松
var friends = [PFUser]()

然后可以简化删除项目的循环

for (index, friend) in friends.enumerate() {
  if friend.objectId == user.objectId {
    //remove the item at the found index
    friends.removeAtIndex(index)
    break
  }
}

甚至

if let index = friends.indexOf({$0.objectId == user.objectId}) {
   friends.removeAtIndex(index)
}

答案 2 :(得分:1)

var anIndex: Int = myArray.indexOfObject(num)

来自apple documentation

答案 3 :(得分:1)

NSMutableArray用于Swift类型数组。 如果您计划使用-indexOfObject(),请使用friends

因此您的var friends: NSMutableArray = NSMutableArray() for friend in self.friends { if friend.objectId == user.objectId { if let foundIndex = friends.indexOfObject(friend) { //remove the item at the found index self.friends!.removeAtIndex(foundIndex) } } } 数组应列为:

var friends: [PFUser] = [] // this is mutable because it's var

此外,您不必使用NSMutableArray()。你可以通过这样的方式轻松地使用swift数组:

-append

如果需要将对象添加到此数组中,可以使用-indexOf执行此操作。 然后,您就可以使用您正在使用的方法{{1}}。