以下是模型类的数据,其中我从所有字典中获取数据但无法从模型类获取ratingVotes,其中我需要获取value
键值对用于在我的UI中显示评级Can有人帮我解决这个问题吗?
func ReviewApiDownloadJsonwithURL(reviewApi : String){
print(reviewApi)
let url = URL(string: reviewApi)!
let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
if error != nil { print(error!); return }
do {
if let jsonObj = try JSONSerialization.jsonObject(with: data!) as? [[String:Any]] {
for item in jsonObj {
self.reviewModel = Review.init(dict: item)
}
DispatchQueue.main.async {
guard let obj = self.reviewModel else { return }
let itemsCount = obj.reviews
for i in 0..<itemsCount.count {
let customAttribute = obj.reviews[i].ratingVotes
// for j in 0..<customAttribute.count {
self.ratingvalue.append(customAttribute[0].value!)
// }
}
print(self.ratingvalue)
self.reviewTableView.delegate = self
self.reviewTableView.dataSource = self
self.activityIndicator.stopAnimating()
self.activityIndicator.hidesWhenStopped = true
self.reviewTableView.reloadData()
self.initialCollectionData()
}
}
} catch {
print(error)
}
}
task.resume()
}
这是我的Json数据
这是我的模型类代码
struct Review {
let ratingPercent : Any?
let count : Any?
let reviews : [Reviews]
init(dict : [String:Any]) {
if let customAttribute = dict["reviews"] as? [[String: AnyObject]] {
var result = [Reviews]()
for obj in customAttribute {
result.append(Reviews(dict: (obj as? [String : Any])!))
}
self.reviews = result
} else {
self.reviews = [Reviews]()
}
self.ratingPercent = dict["avg_rating_percent"]
self.count = dict["count"]
}
}
struct Reviews {
let reviewId : Any?
let createdAt : Any?
let entityId : Any?
let entityValue : Any?
let statusId : Any?
let detailId : Any?
let title : String?
let detail : String?
let nickName : String?
let customerId : Any?
let entityCode : Any?
let ratingVotes : [RatingVotes]
init(dict : [String:Any]) {
if let customAttribute = dict["rating_votes"] as? [[String: Any]] {
var result = [RatingVotes]()
for obj in customAttribute {
result.append(RatingVotes(dict: (obj as? [String : Any])!))
}
self.ratingVotes = result
} else {
self.ratingVotes = [RatingVotes]()
}
self.reviewId = dict["review_id"]
self.createdAt = dict["created_at"]
self.entityId = dict["entity_id"]
self.entityValue = dict["entity_pk_value"]
self.statusId = dict["status_id"]
self.detailId = dict["detail_id"]
self.title = dict["title"] as? String
self.detail = dict["detail"] as? String
self.nickName = dict["nickname"] as? String
self.customerId = dict["customer_id"]
self.entityCode = dict["entity_code"]
}
}
struct RatingVotes {
let voteId : Int?
let optionId : Int?
let remoteIp : Any?
let remoteIpLong : Int?
let customerId : Any?
let entityPkValue : Any?
let ratingId : Int?
let reviewId : Int?
let percent : Int?
let value: Int?
let ratingCode : String?
let storeId : Int?
let code : Int?
let postion : Int?
init(dict : [String:Any]) {
self.voteId = dict["vote_id"] as? Int
self.optionId = dict["option_id"] as? Int
self.remoteIp = dict["remote_ip"]
self.remoteIpLong = dict["remote_ip_long"] as? Int
self.customerId = dict["customer_id"]
self.entityPkValue = dict["entity_pk_value"]
self.ratingId = dict["rating_id"] as? Int
self.reviewId = dict["review_id"] as? Int
self.percent = dict["percent"] as? Int
self.value = dict["value"] as? Int
self.ratingCode = dict["rating_code"] as? String
self.storeId = dict["store_id"] as? Int
self.code = dict["code"] as? Int
self.postion = dict["position"] as? Int
}
}
答案 0 :(得分:0)
您可能会复制粘贴代码,这只是错误的错误。您可以通过调试轻松找到它,这是您犯的一个小错误
在struct Reviews
if let customAttribute = dict["reviews"] as? [[String: Any]] {
var result = [RatingVotes]()
for obj in customAttribute {
result.append(RatingVotes(dict: (obj as? [String : Any])!))
}
self.ratingVotes = result
} else {
self.ratingVotes = [RatingVotes]()
}
您在reviews
dict["reviews"]
它应该是rating_votes
,如dict["rating_votes"]
希望它对你有所帮助
答案 1 :(得分:0)
您已获得两个时间复习字典相同的值。 如果让customAttribute = dict [“review”]为? [[String:Any]因此,请将'review'更改为'rating_votes'
或按照以下代码对它有帮助!!
init(dict : [String:Any]) {
if let customAttribute = dict["rating_votes"] as? [[String: Any]] {
var result = [RatingVotes]()
for obj in customAttribute {
result.append(RatingVotes(dict: (obj as? [String : Any])!))
}
self.ratingVotes = result
} else {
self.ratingVotes = [RatingVotes]()
}
self.reviewId = dict["review_id"]
self.createdAt = dict["created_at"]
self.entityId = dict["entity_id"]
self.entityValue = dict["entity_pk_value"]
self.statusId = dict["status_id"]
self.detailId = dict["detail_id"]
self.title = dict["title"] as? String
self.detail = dict["detail"] as? String
self.nickName = dict["nickname"] as? String
self.customerId = dict["customer_id"]
self.entityCode = dict["entity_code"]
}
}