gpt4 book ai didi

ios - Dribble Api 返回错误数据

转载 作者:行者123 更新时间:2023-11-30 13:34:13 25 4
gpt4 key购买 nike

大家好,最近从 Dribble 获取数据时出现了一个错误..

我的 Dribbble 客户端 IOS 在主屏幕上显示镜头,如果您单击 collectionView Cell,它会将您带到镜头的详细信息..

我正在使用此方法通过其 api 获取 Dribble 数据。

getShots 方法的代码

 class func getShots(url: String, callback:(([Shot]) -> Void)){
var shots = [Shot]()
let url = url + "&access_token=" + Config.ACCESS_TOKEN

HttpService.getJSON(url){ (jsonData) -> Void in

for shotData in jsonData {
let shot = Shot(data: shotData as! NSDictionary)
shots.append(shot)
}

let priority = DISPATCH_QUEUE_PRIORITY_DEFAULT
dispatch_async(dispatch_get_global_queue(priority, 0), { () -> Void in
dispatch_async(dispatch_get_main_queue(), { () -> Void in
callback(shots)
})
})
}
}

getJSON 方法的代码..

class HttpService {
class func getJSON(url: String, callback:((NSArray) -> Void)) {
let nsURL = NSURL(string: url)!
Alamofire.request(.GET, nsURL).response { (request, response, data, error) -> Void in
if error != nil{
print("error")
}

if data != nil {
let jsonData = (try! NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers)) as! NSArray
callback(jsonData)
}
}
}
}

上面的代码成功加载了镜头 JSON 数据。因此,当我在 self.shots = shot 行上调试它时,它会返回类似这样的内容..

The log when debugging on the self.shots = shots line

一切正常......以及镜头细节类的代码......我一直在使用动态 tableView 来显示镜头细节

ShotDetail 中的代码是为标签分配文本的代码.. 基本上是 TableView 数据源方法..

    // MARK: - Table view data source

override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 2
}




override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
if section == 0 {
return 9
} else {
return comments.count
}
}



override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

if indexPath.section == 0 {
if indexPath.row == 0 {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell1", forIndexPath: indexPath) as! vlcTableViewCell

// Configure the cell
// the views . likes. and the comment Count label are allocated
cell.viewsCount.text = "\(shot.viewsCount)"
cell.likesCount.text = "\(shot.likesCount)"
cell.commentCount.text = "\(shot.commentCount)"

return cell
} else if indexPath.row == 1 {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell2", forIndexPath: indexPath) as! descCell

// Configure the Cell
// the text for the labels
cell.usernameLabel.text = "\(shot.user.username)"
cell.descriptionLabel.text = "\(shot.description)"
cell.profileImageView.sd_setImageWithURL(NSURL(string: shot.user.avatarUrl), placeholderImage: UIImage(named: "2"))

return cell

} else if indexPath.row == 2 {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell4", forIndexPath: indexPath) as! teamCell
if shot.team == nil{
cell.teamNameLabel.text = "Team"
} else {
cell.teamNameLabel.text = "\(shot.team.name)"
}
return cell
} else if indexPath.row == 4 {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell5", forIndexPath: indexPath) as! reboundShotsCount
cell.reboundCountLabel.text = "\(shot.reboundCount)"

return cell

} else {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell10", forIndexPath: indexPath) as! CommentCell

let comment = comments[indexPath.row]
cell.nameLabel.text = comment.user.name
cell.commentLabel.text = comment.body

cell.avatarImageView.alpha = 0.0



cell.avatarImageView.sd_setImageWithURL(NSURL(string: comment.user.avatarUrl), placeholderImage: UIImage(named: "2"), completed: { (image, error, cacheType, url) -> Void in
cell.avatarImageView.alpha = 1.0
// Animate the imageView after the image is loaded
cell.animationView.layer.cornerRadius = 25
cell.animationView.delay = 0
cell.animationView.duration = 0.5
cell.animationView.type = "popAlpha"
cell.animationView.startCanvasAnimation()
})

cell.dateLabel.text = comment.date

return cell
}
}

以及镜头类的代码..从那里我获取要设置到标签的所有数据

import Foundation

class Shot: DribbbleBase {

var imageUrl : String!
var htmlUrl : String!
var commentsUrl : String!
var bucketsUrl : String!
var likesUrl : String!
var attachmentUrl : String!
var reboundUrl : String!

var title : String!
var date : String!
var description : String!
var commentCount : Int!
var viewsCount : Int!
var likesCount : Int!
var bucketsCount : Int!
var attachmentsCount : Int!
var reboundCount : Int!
var imageUrll : String!
var teamUrl : String!

var user : User!
var team : Team!

override init(data: NSDictionary) {
super.init(data: data)

self.commentCount = data["comments_count"] as! Int
self.likesCount = data["likes_count"] as! Int
self.viewsCount = data["views_count"] as! Int
self.bucketsCount = data["buckets_count"] as! Int
self.attachmentsCount = data["attachments_count"] as! Int
self.reboundCount = data["rebounds_count"] as! Int

self.commentsUrl = Utils.getStringFromJSON(data, key: "comments_url")
self.bucketsUrl = Utils.getStringFromJSON(data, key: "buckets_url")
self.likesUrl = Utils.getStringFromJSON(data, key: "likes_url")
self.title = Utils.getStringFromJSON(data, key: "title")
self.attachmentUrl = Utils.getStringFromJSON(data, key: "attachments_url")
self.reboundUrl = Utils.getStringFromJSON(data, key: "rebounds_url")
self.teamUrl = Utils.getStringFromJSON(data, key: "teams_url")

let dateInfo = Utils.getStringFromJSON(data, key: "created_at")
self.date = Utils.formatDate(dateInfo)

let desc = Utils.getStringFromJSON(data, key: "description")
self.description = Utils.stripHTML(desc)

let images = data["images"] as! NSDictionary
self.imageUrl = Utils.getStringFromJSON(images, key: "normal")
self.imageUrll = Utils.getStringFromJSON(images, key: "hidpi")


let tags = data["tags"] as! NSArray

if let userData = data["user"] as? NSDictionary {
self.user = User(data: userData)
}

if let teamData = data["team"] as? NSDictionary {
self.team = Team(data: teamData)
}

}
}

现在,当我点击单元格转到下一个单元格时,就会出现问题。在此之前,如果我在 Shot 类中进行调试..

数据看起来像这样

The Log Which shows the data returned

现在每当我点击单元格时。去详细了解。数据仅返回 7 个值,而第一个值返回了所需的所有值..

我用来在PopularShotsCollectionViewController中推送数据的代码是这样的。

 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if(segue.identifier == "1"){
let selectedItems = collectionView!.indexPathsForSelectedItems()

if let sItem = selectedItems as [NSIndexPath]!{
let shot = shots[sItem[0].row]
let controller = segue.destinationViewController as! ShotDetail
controller.shot = shot
}

}
}

但是日志只返回 7 个值..

https://www.dropbox.com/s/4vkgg7a3f44fg35/Screen%20Shot%202016-03-28%20at%2014.40.23.png?dl=0

我已将链接放入代码块中,因为我不能发布超过 2 个链接。

任何帮助将不胜感激..

谢谢雅利安人

最佳答案

let shot = shot[sItem[0].row] 可能是问题所在。您将相同的索引传递给 DetailVC。您可以保存所选镜头的数组,然后将其传递给 DetailVC 中的镜头变量(如果镜头变量是 镜头 的数组)

var selectedIndex = NSIndexPath()
override func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {

selectedIndex = indexPath
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if(segue.identifier == "1"){
let selectedItems = collectionView!.indexPathsForSelectedItems()
let selectedShots = shots[selectedIndex.row]
let controller = segue.destinationViewController as! ShotDetail
controller.shot = selectedShots
}

}
}

关于ios - Dribble Api 返回错误数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36263789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com