ios - 在 .xib 中显示来自 api 的数据不起作用
问题描述
我使用 .xib 文件在单个文件中创建多个UICollectionView
/ ,它可以很好地处理虚拟数据。但现在我想将 API 集成到 .nib 中。我面临我执行的问题,但它应该从服务中返回,但它总是返回 0 个bannerImageModel 我无法纠正这个问题,请帮助我UITableview
UIViewController
getDataForBannerImage()
bannerImageModel
class BannerImageStatus: Decodable {
let status: String
let error: Bool
let data: [BannerImageModel]
init(status: String, error: Bool, data: [BannerImageModel]) {
self.status = status
self.error = error
self.data = data
}
}
class BannerImageModel: Decodable {
var id: String
var name: String
var image: String
var url: String
var status: String
var created_at: String
init(id: String, name: String, image: String, url: String, status: String, created_at: String) {
self.id = id
self.name = name
self.image = image
self.url = url
self.status = status
self.created_at = created_at
}
}
class BannerImageService {
var bannerImageModel = [BannerImageModel]()
func getDataForBannerImage() -> [BannerImageModel] {
Alamofire.request("http://abcd/Homeapi/banner/format/json/").responseJSON{ response in
if let locationJSON = response.result.value as? [String: Any] {
let data = locationJSON["data"] as! [[String: Any]]
for dataItem in data {
let bannerModel = BannerImageModel(id: dataItem["id"] as! String, name: dataItem["name"] as! String, image: dataItem["image"] as! String, url: dataItem["url"] as! String, status: dataItem["status"] as! String, created_at: dataItem["created_at"] as! String)
self.bannerImageModel.append(bannerModel)
print(bannerModel.url + bannerModel.image)
}
}
}
return bannerImageModel
}
现在,当我从 .xib 类调用服务时,由于这个问题,bannerImageModelArray.count 总是给出 0,我无法调用我的集合视图
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
//bannerImageService.getDataForBannerImage()
bannerImageModelArray = bannerImageService.getDataForBannerImage()
print(bannerImageModelArray.count)
print(bannerImageService.bannerImageModel.count)
Bundle.main.loadNibNamed("BannerView", owner: self, options: nil)
self.addSubview(self.view)
let nibName = UINib(nibName: "BannerCollectionViewCell", bundle: nil)
bannerCollectionView.register(nibName, forCellWithReuseIdentifier: "BannerCollectionViewCell")
bannerCollectionView.dataSource = self
bannerCollectionView.delegate = self
bannerCollectionView.isUserInteractionEnabled = false
startTimer()
}
解决方案
推荐阅读
- php - 无法在 WordPress 编辑器中保存已编辑的主题 PHP 页面(管理面板)
- java - 无法设置 JRE_HOME 变量
- google-apps-script - 替换文本的问题
- graphql - 带有 Gatsby 设置的 Apollo 订阅
- javascript - 从flask python中的静态文件夹上传图像而不重新加载html页面
- java - 不使用 Java 套接字中的 ObjectInputStream 读取任何内容
- c# - 使用 C# LINQ 和 MongoDB 对嵌入式/嵌套文档进行子查询或联接
- swift - SwiftUI 按钮:保留突出显示的状态而没有丑陋的动画
- c++ - 在字符串中搜索单词的频率(C++)
- openedge - 你好我怎么能联合表进行中4gl?并显示