[英]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.