簡體   English   中英

如何從任意對象的無序數組中獲取隨機的任意對象?

[英]How do I get a random anyobject from an unordered array of anyobject?

這是我的代碼:

if let photosData = parsedResult as? NSDictionary {
    var arrayOfPhotos = photosData.valueForKey("data")!
    // i want to do something like let photo = arrayOfPhotos.random
}

photosData在哪里

"data" =    
    (
        { 
            "id"= 1234;
            "name" = "Sam";
        },
        { 
            "id"= 4567;
            "name" = "John";
        },
        { 
            "id"= 1234;
            "name" = "Tony";
        }
    )

現在我剩下的是arrayOfPhotos,它的取值為“ data”

問題:

如何訪問arrayOfPhotos中的隨機對象?

當我有一個xcode不會立即告訴我變量的類型時,如何獲取類型?

如何在調試時記錄變量,對象? 我只使用打印嗎?

編輯2:大量編輯,因為問題寫得不好。

解決了:

我在arrayOfPhotos聲明中添加了“ as?[AnyObject]”

if let photosData = parsedResult as? NSDictionary {
    var arrayOfPhotos = photosData.valueForKey("data")! as? [AnyObject]
    // i want to do something like let photo = arrayOfPhotos.random
}

現在我可以通過arrayOfPhotos.first抓取一個對象或抓取一個索引

在這種情況下, arrayOfPhotos將是一個包含NSDictionary的有序集合的NSArray NSArray本質上是有序的集合,由整數索引,當您按照放入它們的順序從它們中取出東西時。 NSDictionary相反,后者是由(在這種情況下)NSString索引的無序集合。 字典是無序的,因為事物不一定按您放入的順序出現,實際上,如果要遍歷字典中的所有項目,則它們的出現順序會變幻莫測。

要回答您提出的確切問題,最好使用:

if let photosData = parsedResult as? NSDictionary {
    if let arrayOfPhotos = photosData.valueForKey as? [[String:AnyObject]] {
        // At this point, arrayOfPhotos is an array of dictionaries, so we use direct int indexing:
        let firstPhoto = arrayOfPhotos[0]
        let nthPhoto = arrayOfPhotos[n]

        // Both firstPhoto and nthPhoto now have the type [String:AnyObject], or in otherwords
        //  they map a String to anything, anything because "id" is an int, and "name" is a String
        let firstId = firstPhoto["id"] as! Int
        let firstName = firstPhoto["name"] as! String
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM