我想尝试在 xcode 8 中引用此 json ( link here) 中的所有“标题”。问题是在我可以提取标题之前需要引用一个对象和数组(我相信)数据,我不确定该怎么做。
到目前为止,这是我得到的:
func fetchFeed(){
let urlRequest = URLRequest(url: URL(string: "http://itunes.apple.com/us/rss/topalbums/limit=10/json")!)
let task = URLSession.shared.dataTask(with: urlRequest) { (data,response,error) in
if error != nil {
print(error)
return
}
self.artists = [Artist]()
do {
let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as! [String : AnyObject]
if let feedFromJson = json["feed"]?["entry"] as? [[String : AnyObject]] {
for feedFromJson in feedsFromJson {
let feed = Feed()
if let entry = feedFromJson["entry"] as? String, let author = feedFromJson["domain"] as? String {
feed.entry = entry
article.headline = title
}
self.articles?.append(article)
}
}
DispatchQueue.main.async {
self.tableview.reloadData()
提前感谢您的帮助!
最佳答案
我正在努力了解您的需求。如果你想获得一个 Article
数组,其中 headline
是条目的标题标签,下面是我如何欺骗它。
func articles(from json: Any?) -> [Article] {
guard let json = json as? NSDictionary, let entries = json.value(forKeyPath: "feed.entry") as? [NSDictionary] else {
return []
}
return entries.flatMap { entry in
guard let title = entry.value(forKeyPath: "title.label") as? String else {
return nil
}
var article = Article()
article.headline = title
return article
}
}
你这样调用它
self.articles = articles(from: json)
NSDictionary
具有近乎神奇的方法 value(forKeyPath:)
。调用 json.value(forKeyPath: "feed.entry")
返回字典数组。每个字典都是 json 中的一个 "entry"
对象。接下来,我映射每个条目以调用返回字符串的 entry.value(forKeyPath: "title.label")
。
如果这不仅仅是一个快速解决方案,那么我会考虑添加 SwiftyJSON
到您的项目。
func articles(from json: Any?) -> [Article] {
return JSON(json)["feed"]["entry"].arrayValue.flatMap { entry in
guard let title = entry["title"]["label"].string else {
return nil
}
var article = Article()
article.headline = title
return article
}
}
关于ios - 如何在 xcode 8 中的对象中引用数组中的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44379690/