【发布时间】:2019-02-21 00:30:52
【问题描述】:
由于我是 swift 新手,我对我的代码有疑问,它到底是什么问题!我有表格视图,我应该放置一些从 API 获取的数据。我正在使用 alamofire 和 moya。
我在我的 vc 中调用这个函数来请求网络:
class SmsPresenter
{
var view:SmsView?
func attachView(view: SmsView){
self.view = view
}
func gettingEveyThing( aptId : String){
ApiGenerator.request(targetApi: ApartemanService.getSmsInfo(aptId: aptId), responseModel: smsModelList.self, success: { (response) in
self.view?.GettingEverthingSuccess(response: response.body)
}) { (error) in
print(error)
self.view?.GettingEvethingFailed(errorMessage: "error")
}
}
这是我将它们存储在这里的数据模型:
typealias smsModelList = [SmsModel]
struct SmsModel:Codable {
var unitNo:Int?
var unitPlaque:String?
var billText:String?
var contacts:[ContactsModel?]
}
struct ContactsModel:Codable
{
var id :Int?
var selected :Bool?
var phoneNumber : String?
var name : String?
}
当我得到 200 状态码时,这是 func:
func GettingEverthingSuccess(response: smsModelList?) {
print("getting evething success")
guard let response = response else {
return
}
self.data = response
self.tableview.reloadData()}
我的声明:
var Presenter = SmsPresenter()
var data : smsModelList?
var Pphone : [String] = []
var Nname : [String] = []
var Iid : [Int] = []
填充表:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "SmsCell") as? SmsTableViewCell
if let contacts = data?[indexPath.row].contacts
{
for eachmain in contacts
{
Pphone.append((eachmain?.phoneNumber)!)
Nname.append((eachmain?.name)!)
Iid.append((eachmain?.id)!)
}
}
}
我的代码到底有什么问题:| !当我运行代码时,它将第一个数字放入第一行,然后再次将第二个数字放入第一个 ro,尽管它应该将第二个数字和其他数字放入它们的单元格行。
API 响应:
[
{
"contacts": [
{
"id": 9827,
"selected": true,
"phoneNumber": "00987684044",
"name": "OWNER"
}
],
"unitNo": 1,
"unitPlaque": "Jack",
"billText": "TEXTTEXT"
},
{
"contacts": [
{
"id": 10145,
"selected": true,
"phoneNumber": "098887776655",
"name": "mmm"
}
],
"unitNo": 2,
"unitPlaque": "mm",
"billText": "TEXTTEXT"
}
]
照片: Photo
我的最终答案是所有答案的组合
【问题讨论】:
-
你没有序列化你的数据
-
cellForRowAt会一次又一次地调用,因为它正在重用单元格,所以我认为这种方法不能在cellForRowAt方法中附加数据。 -
什么意思?我得到了数据,我可以展示它,但是方式错误
-
我刚刚添加了一张照片
-
@DharmeshKheni 你有什么建议?
标签: ios swift uitableview alamofire moya