Ios 如何在xcode 8中的对象中引用数组中的对象?

Ios 如何在xcode 8中的对象中引用数组中的对象?,ios,arrays,json,swift,object,Ios,Arrays,Json,Swift,Object,我希望在xcode 8中尝试引用这个json()中的所有“标题”。问题是,在我提取标题数据之前,需要引用(我相信)一个对象和数组,我不知道如何做到这一点 到目前为止,我得到的是: func fetchFeed(){ let urlRequest = URLRequest(url: URL(string: "http://itunes.apple.com/us/rss/topalbums/limit=10/json")!) let task = URLSession.shared

我希望在xcode 8中尝试引用这个json()中的所有“标题”。问题是,在我提取标题数据之前,需要引用(我相信)一个对象和数组,我不知道如何做到这一点

到目前为止,我得到的是:

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()
提前感谢您的帮助

  • 有两种头衔。 “提要”和“条目”
  • 如果let entry=feedFromJson[“entry”]as?字符串,让author=feedFromJson[“域”]作为?串{

    iOS的实践并非如此

    feedFromJson[“entry”]是nil,不是字符串。我想您应该尝试获取“feed”标题

    要获取“条目”标题,只需遍历数组并获取标题

    let titleDict = feedFromJson["title"] as? Dictionary
    let title = titleDict["title"] as? String
    article.headline = title
    
  • 更好地了解JSON数据的结构
  • 太快了

    如果让feedFromJson=json[“feed”]?[“entry”]作为?[[String: 任何对象]]{

    你应该一步一步来

    if let feedFromJson = (json["feed"] as Dictionary)?["entry"] as? [[String : AnyObject]] {
    
  • 有两种头衔。 “提要”和“条目”
  • 如果让entry=feedFromJson[“entry”]作为字符串,则让author=feedFromJson[“domain”]作为字符串{

    iOS的实践并非如此

    feedFromJson[“entry”]是nil,不是字符串。我想您应该尝试获取“feed”标题

    要获取“条目”标题,只需遍历数组并获取标题

    let titleDict = feedFromJson["title"] as? Dictionary
    let title = titleDict["title"] as? String
    article.headline = title
    
  • 更好地了解JSON数据的结构
  • 太快了

    如果让feedFromJson=json[“feed”]?[“entry”]作为?[[String: 任何对象]]{

    你应该一步一步来

    if let feedFromJson = (json["feed"] as Dictionary)?["entry"] as? [[String : AnyObject]] {
    

    我正在努力了解你需要什么。如果你想得到一篇
    文章
    数组,其中
    标题
    是条目的标题标签,下面是我如何作弊的

    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”)
    返回一个字符串


    <>如果这不仅仅是一个快速的解决方案,那么我会考虑添加到你的项目。

    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
        }
    }
    

    我正在努力了解你需要什么。如果你想得到一篇
    文章
    数组,其中
    标题
    是条目的标题标签,下面是我如何作弊的

    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”)
    返回一个字符串


    <>如果这不仅仅是一个快速的解决方案,那么我会考虑添加到你的项目。

    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
        }
    }
    

    感谢Jeffery和DengApro的提示,他们今晚将使用它们,并会让你知道它们是如何进行的。Cheers Jeffery的方法更快捷,.flatMap是一个很好的单子。我的是直观的,找出结构,获取数据,JSON并不难。我也更喜欢SwiftyJSON。感谢Jeffery和DengApro的提示,他们今晚将使用它们,并将让你知道它是如何运行的。ChearsJeffery的方法更快捷,.flatMap是一个很好的单子。我的方法直观,能理解结构,能获取数据,JSON并不难。我也更喜欢SwiftyJSON。你说得对,value(forKeyPath)是神圣的。这解决了我的问题。谢谢!!你说得对,value(forKeyPath)是神圣的。这解决了我的问题。谢谢!!