簡體   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