【问题标题】:Why isn't my text being added to my label?为什么我的文本没有添加到我的标签中?
【发布时间】:2017-09-25 15:34:51
【问题描述】:

修改后的帖子:所以下面发布的代码是我的stuct

 struct AnimeJsonStuff: Decodable {
    let data: [AnimeDataArray]
}

struct AnimeLinks: Codable {
    var selfStr   : String?

    private enum CodingKeys : String, CodingKey {
        case selfStr     = "self"
    }
}
struct AnimeAttributes: Codable {
    var createdAt   : String?
    var slug : String?
    private enum CodingKeys : String, CodingKey {
        case createdAt     = "createdAt"
        case slug = "slug"
    }
}
struct AnimeRelationships: Codable {
    var links   : AnimeRelationshipsLinks?

    private enum CodingKeys : String, CodingKey {
        case links     = "links"
    }
}

struct AnimeRelationshipsLinks: Codable {
    var selfStr   : String?
    var related   : String?

    private enum CodingKeys : String, CodingKey {
        case selfStr     = "self"
        case related     = "related"
    }
}

struct AnimeDataArray: Codable {
    let id: String?
    let type: String?
    let links: AnimeLinks?
    let attributes: AnimeAttributes?
    let relationships: [String: AnimeRelationships]?

    private enum CodingKeys: String, CodingKey {
        case id = "id"
        case type = "type"
        case links = "links"
        case attributes = "attributes"
        case relationships = "relationships"
    }
}

这段代码是我解析数据的函数:

    func jsonDecoding() {

    let jsonUrlString = "https://kitsu.io/api/edge/anime"

    guard let url = URL(string: jsonUrlString) else {return}
    URLSession.shared.dataTask(with: url) { (data, response, err) in
        guard let data = data else {return}
        do {
            let animeJsonStuff =  try JSONDecoder().decode(AnimeJsonStuff.self, from: data)
            for anime in animeJsonStuff.data {
                //   print(anime.id)
                //    print(anime.type)
                //   print(anime.links?.selfStr)
                let animeName = anime.attributes?.slug
                print(animeName)
                DispatchQueue.main.async {
                    self.nameLabel.text = animeName
                }

                for (key, value) in anime.relationships! {
                    //   print(key)
                    //   print(value.links?.selfStr)
                    //    print(value.links?.related)
                }
            }
        } catch let jsonErr {
            print("Error serializing json", jsonErr)
        }
        }.resume()
}

这是控制台打印出来的:

Optional("cowboy-bebop")
Optional("cowboy-bebop-tengoku-no-tobira")
Optional("trigun")
Optional("witch-hunter-robin")
Optional("beet-the-vandel-buster")
Optional("eyeshield-21")
Optional("honey-and-clover")
Optional("hungry-heart-wild-striker")
Optional("initial-d-fourth-stage")
Optional("monster")
Optional("cowboy-bebop")
Optional("cowboy-bebop-tengoku-no-tobira")
Optional("trigun")
Optional("witch-hunter-robin")
Optional("beet-the-vandel-buster")
Optional("eyeshield-21")
Optional("honey-and-clover")
Optional("hungry-heart-wild-striker")
Optional("initial-d-fourth-stage")
Optional("monster")
Optional("cowboy-bebop")
Optional("cowboy-bebop-tengoku-no-tobira")
Optional("trigun")
Optional("witch-hunter-robin")
Optional("beet-the-vandel-buster")
Optional("eyeshield-21")
Optional("honey-and-clover")
Optional("hungry-heart-wild-striker")
Optional("initial-d-fourth-stage")
Optional("monster")

它现在显示文本,但当我有三个单元格时,它只显示最后一个名为 Monster 的可选选项,而不显示所有其他选项。它只在每个单元格中显示怪物。 应该是

第一格:Cowboy-bebpop 第二单元:牛仔-bebop-tengoku-no-tobira 第三格:三角枪 等等

【问题讨论】:

  • post 中调用didSet 的代码是什么? nameLabel 没有框架?没有superview
  • 您在哪里添加 nameLabel 以查看?并将 frame 设置为 nameLabel。
  • 您好,我编辑了我的帖子!我得到了要打印的标签,但它只打印最后一个。我还添加了更多代码。

标签: json swift uilabel swift4


【解决方案1】:
  1. 我看不到你在哪里设置post 变量。
  2. 您将nambeLabel 放在Controller 的视图层次结构中的什么位置?
  3. 也许你应该在主线程中设置nameLabel.text

    DispatchQueue.main.async {
        self.nameLabel.attributedText = attributedText
    }
    

【讨论】:

猜你喜欢
  • 2016-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-30
  • 1970-01-01
  • 2017-02-26
  • 1970-01-01
  • 2015-06-14
相关资源
最近更新 更多