这是在扩展PFQueryTableViewController的类中,我收到以下错误。行仅为PFUser
我为什么不能施展它?有办法解决这个问题吗?
错误是:
Cannot subscript a value of [AnyObject]? with an index of type Int
...对于这一行:
var user2 = self.objects[indexPath.row] as! PFUser
答案 0 :(得分:59)
问题不在于演员表,但self.objects
似乎是一个可选数组:[AnyObject]?
。
因此,如果要通过下标访问其中一个值,则必须首先解包该数组:
var user2: PFUser
if let userObject = self.objects?[indexPath.row] {
user2 = userObject as! PFUser
} else {
// Handle the case of `self.objects` being `nil`.
}
表达式self.objects?[indexPath.row]
使用optional chaining首先解包self.objects
,然后调用其下标。
从Swift 2开始,您还可以使用guard statement:
var user2: PFUser
guard let userObject = self.objects?[indexPath.row] else {
// Handle the case of `self.objects` being `nil` and exit the current scope.
}
user2 = userObject as! PFUser
答案 1 :(得分:5)
我遇到了同样的问题并解决了这个问题:
let scope : String = searchBar.scopeButtonTitles![searchBar.selectedScopeButtonIndex] as! String
对于您的情况,您可以这样做:
var user2 : PFUser = self.objects![indexPath.row] as! PFUser
答案 2 :(得分:3)
我的解决方法是......
答案 3 :(得分:1)
只需添加一个!对象之后的(感叹号),如:
var user2 = self.objects![indexPath.row] as! PFUser
为我解决了这个问题:)
答案 4 :(得分:0)
我遇到了类似的问题:
array![row]
我无法理解问题的来源;如果我将row
替换为1
之类的数字,则代码编译并运行时没有任何问题。
然后我很乐意将其改为:
array![Int(row)]
它有效。对于我的生活,我不明白为什么给一个数组索引-1
在理论上是合法的,但是你去了。对我来说,对于未签名的下标是有意义的,但也许它只是我;我不得不问Chris这件事。