빠른 여기. NetworkService라는 클래스가 있습니다. NSURLSession
및 완료 블록을 설정하는 방법이 있습니다. My Object 클래스 인 NewsItem
에는 첫 번째 메서드를 호출하고 URL로 이동하여 JSON
데이터를 다운로드하고 배열에 추가 한 다음 반환하는 메서드 downloadNewsItems
이 있습니다. 그 시점까지 모든 것이 내가 원하는대로 작동합니다. 개체를 만들고 추가 한 다음 반환합니다 (메서드 이름은 downloadImage이지만 모든 종류의 데이터에서 작동 할 수 있습니다).JSON 데이터 다운로드 그런 다음 다시로드 콜렉션보기
func downloadImage(completion: (NSData -> Void)) {
let request = NSURLRequest(URL: self.url)
let dataTask = session.dataTaskWithRequest(request) { (data, response, error) in
if error == nil {
if let httpResponse = response as? NSHTTPURLResponse {
switch (httpResponse.statusCode) {
case 200:
if let data = data {
completion(data)
}
default:
print(httpResponse.statusCode)
}
}
} else {
print("Error: \(error?.localizedDescription)")
}
}
dataTask.resume()
}
여기 내 객체 클래스에서 동일한 메소드가 구현되었습니다.
그 print(newsItems.count)
은 내 개체를 사전에 적절하게 다운로드하여 업데이트했습니다. 이제 여기에 문제가 온다. 나는 CollectionViewController
입니다. 메서드 호출에서 얻은 데이터로 채 웁니다. 나는 배열을 만들고 내부 객체를 반환하는 메서드를 호출합니다. ViewDidLoad:
그러나 NO! 인쇄 할 때 0이되고 collectionView
에 셀이 표시되지 않습니다. 있는 viewDidLoad에서 다음
var newsItems = [NewsItem]()
: 객체가 다운로드
newsItems = NewsItem.downloadNewsItems()
print(newsItems.count)
collectionView.reloadData()
, 내 초기화() 메소드에 의해 설정 얻고 NetworkService와/NewsItem의 클래스의 내부하지만, 동안 방법의 배열에 추가 컬렉션 뷰 컨트롤러에서 메서드를 호출 할 때, 아무 것도. 처음에는 기본 JSONSerialisation 라우트를 시도했지만 동일한 문제점이있었습니다. 어쩌면 내가 제대로하지 않을 거라 생각 했어. 제 3 자 JSON 라이브러리 (SwiftyJSON)로 전환 ... 정확히 동일한 문제. 도와주세요. 나는이 3 주를 보냈다. 나는 .. 할 수 없다. 더 이상은 ..
선생님 귀하의 방법을 변경, 코드 충돌 결코 수 있으며 커피는 부족하지 않을 수도 있습니다. 당신은 진정한 영웅입니다. 고맙습니다. 완벽하게 일했습니다! – Mwiti
@ user2361090 : hehehehehehe :) 당신은 항상 환영합니다 :) Happy coding :) –