繁体   English   中英

“ [AnyObject]?无法转换为'NSArray'

[英]"[AnyObject]? is not convertible to 'NSArray'

这是我的另一个问题。

在通过应用进行编码时,我正在使用Parse Framework,并且正在使用查询从数据库中获取用户名:

var showUsername:PFQuery = PFUser.query()!
    //showUsername.whereKey("objectId", equalTo: post.objectForKey("user")!.objectId)

    showUsername.whereKey("objectId", equalTo: post.objectForKey("user")!)

    showUsername.findObjectsInBackgroundWithBlock{
        (objects: [AnyObject]?, error: NSError?) -> Void in

         if error == nil{
            let user:PFUser = (objects as NSArray!).lastObject as! PFUser
            cell.usernameLabel.text = user.username
        }

    }

我在这两行代码中遇到了麻烦:

//showUsername.whereKey("objectId", equalTo: post.objectForKey("user")!.objectId)

我把它注释掉了,因为它说.objectID是错误的,所以如果我删除它,那说很好。 所以我想知道它的功能是否相同???

而且,这一行:

let user:PFUser = (objects as NSArray!).lastObject as! PFUser

它在Xcode上显示是正确的,但是当我运行该应用程序时,它由于该行代码而死机并崩溃,原因是该错误表明“ [AnyObject]?无法转换为'NSArray'

有什么办法可以解决此问题?

我已经尝试了其他链接的内容:

'[AnyObject]? 不能转换为“ NSArray

如何在单元格中设置当前用户?Swift,解析

而且我的代码没有错误,并且可以运行,但是用户名未更改为实际的用户名,仍然显示“ Label”

除非与查询缺少.objectID有关?

问题的第一部分(您注释掉的行):

showUsername.whereKey("objectId", equalTo: post.objectForKey("user")!.objectId)

通过添加!来解开objectId。 如下

showUsername.whereKey("objectId", equalTo: post.objectForKey("user")!.objectId!)

问题的第二部分:

更换

let user:PFUser = (objects as NSArray!).lastObject as! PFUser

通过

let user = (objects as! [PFUser]).last

尝试这个:

(objects as? NSArray)?.lastObject as! PFUser

看起来对象是AnyObject的可选数组。 您可以将其强制转换为可选的NSArray。

无论如何,Swift数组也具有last属性。 你可以用

`let user:PFUser? = objects.last as? PFUser`

代替。 您的内部条件代码可以写成

let user = objects?.last as? PFUser
cell.usernameLabel.text = user?.username ?? ""

一些解释:

用户是可选的PFUser,是PFUser实例的PFUser引用,或者不包含。 类型是Optional (哪个也可以写为PFUser? )。

objectnil时, objects.last求值为objects?.last ,否则为nil

现在, 用户引用对象中的最后一个PFUser实例,否则为零nil )。

usernil时, user?.username评估为user.username ,否则为nil

最后?? 如果为非nil,则运算符返回左侧表达式,如果为非,则返回右侧。 也就是说,如果用户名是nil ,请使用空字符串代替( “”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM