2017-09-25 4 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") 

이제는 텍스트가 표시되지만 마지막 옵션 인 몬스터 만 표시되고 다른 셀은 3 개의 셀이있을 때만 표시됩니다. 각 셀에는 몬스터 만 표시됩니다. 2 차 전지 카우보이 - bebpop : 그것은

1 휴대해야 카우보이 비밥 - 천국 노 tobira 3 셀 : trigun 등이

+0

오며 'Post'의'didSet'를 호출하는 코드는 무엇입니까? 'nameLabel' 프레임이 없습니다? 'superview'도 없습니까? – Larme

+0

nameLabel을 추가 할 위치는 어디입니까? 그리고 프레임을 nameLabel로 설정하십시오. –

+0

안녕하세요. 내 게시물을 편집했습니다. 인쇄 할 라벨이 있지만 마지막으로 인쇄하는 라벨 만 있습니다. 나는 더 많은 코드도 추가했다. – Dengekiko

답변

0
  1. 난 당신이 어디에서 설정합니까 볼 수 없습니다 post 변수.
  2. 컨트롤러의 뷰 계층에 nambeLabel을 넣은 위치는 어디입니까? 메인 스레드에서
  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 –

관련 문제