在全局变量部分我有这个声明
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
答案 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)
答案 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}}。