不能下标的值? 具有typesInt的索引
这是在扩展PFQueryTableViewController的类中,我收到以下错误。 行将只是PFUser
。
为什么我无法施展它? 有没有解决的办法?
错误是:
Cannot subscript a value of [AnyObject]? with an index of type Int
…这一行:
var user2 = self.objects[indexPath.row] as! PFUser
问题不是cast,而是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]
使用可选的链接首先打开self.objects
,然后调用它的下标。
从Swift 2开始,你也可以使用guard语句 :
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
我遇到了同样的问题,并解决这个问题:
let scope : String = searchBar.scopeButtonTitles![searchBar.selectedScopeButtonIndex] as! String
对于你的情况,你可以这样做:
var user2 : PFUser = self.objects![indexPath.row] as! PFUser
我的解决方法是..
- 如果您确定tableview将只包含用户,则尝试将AnyObject的Array对象转换为PFUser的Array。 然后使用它。
只需添加一个! (感叹号)对象之后,像这样:
var user2 = self.objects![indexPath.row] as! PFUser
为我修好了:)
我有一个类似的问题,与以下行:
array![row]
我不明白这个问题来自哪里, 如果我用像1
这样的数字replacerow
,代码编译和运行没有任何问题。
然后,我有一个快乐的想法改变它:
array![Int(row)]
它的工作。 对于我的生活,我不明白为什么给一个数组-1
指数在理论上是合法的,但你去。 下标是无符号的,对我来说是有道理的,但也许只是我而已。 我得问问Chris 。