您好我正在尝试从Flickr加载图像并将其显示在tableview中,我使用以下3种方法进行显示:
func createConnection(){
let url = NSURL(string: "https://api.flickr.com/services/rest/?method=flickr.photos.getRecent&api_key=" + apiKey + "&per_page=20&format=json&nojsoncallback=1")!
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithURL(url, completionHandler: {data, response, error in self.loadImages(data!)})
task.resume()
}
func loadImages(data: NSData?) {
guard data != nil else{
print("Error")
return
}
do {
let jsonData = try NSJSONSerialization.JSONObjectWithData(data!, options: .AllowFragments)
let photos = jsonData["photos"] as! NSDictionary
let photoList = photos["photo"] as! NSArray
for imageData in photoList{
let theTitle = imageData["title"] as! String
let farm = imageData["farm"]!
let server = imageData["server"]!
let secret = imageData["secret"]!
let id = imageData["id"]!
let imageURL = "https://farm\(farm!).staticflickr.com/\(server!)/\(id!)_\(secret!).jpg"
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithURL(NSURL(string: imageURL)!, completionHandler: {
data, response, error in self.addNewItem(theTitle, data: data)
})
task.resume()
}
}
catch {
print ("Error while loading data")
}
}
func addNewItem(title: String, data: NSData?){
guard data != nil else{
print ("Error")
return
}
let image = UIImage(data: data!)
let item = Item(title: title, image: image)
itemList.append(item)
print (item.title)
}
我在viewDidLoad()中调用第一个方法,然后使用tableView方法,我尝试从itemList [Item]数组中获取图像和图像标题。出于测试目的,我在addNewItem()方法中使用print(item.title)方法来查看是否从json文件获取数据,并打印所有图像标题。 然而,问题是表仍然是空的,因此我想知道是不是因为我没有使用异步下载,虽然我不知道如何做到这一点,因为我是IOS和Swift的新手。 请帮忙