2017-09-25 68 views
0

修訂後:所以貼在下面的代碼是我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") 

它現在顯示文本,但它只顯示最後一個可選叫做怪物,而當我有三個單元格時,它不是所有其他的怪物。它只在每個單元格中顯示怪物。 應該

第一小區:牛仔bebpop 第二小區:牛仔波普 - 天國 - 沒有海桐 第三單元:槍神Trigun 和等

+0

有什麼代碼調用'POST'的'didSet'? 'nameLabel'沒有框架?沒有'superview'? – Larme

+0

你在哪裏添加nameLabel來查看?並將框架設置爲名稱標籤。 –

+0

你好,我編輯了我的文章!我拿到了要打印的標籤,但只有打印最後一張。我添加了更多的代碼。 – Dengekiko

回答

0
  1. 我看不到你在哪裏設置變量爲post
  2. nambeLabel放在Controller的視圖層次結構中的位置?
  3. 也許你應該設置nameLabel.text在主線程:

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

編輯:我只是要編輯我的文章 – Dengekiko

+0

你好,我編輯了我的文章!我拿到了要打印的標籤,但只有打印最後一張。我添加了更多的代碼。 – Dengekiko

+0

@Dengekiko你必須使用'UITableView':https://developer.apple.com/library/content/referencelibrary/GettingStarted/DevelopiOSAppsSwift/CreateATableView.html –

相關問題