gpt4 book ai didi

ios - 所有数据都显示在一行中

转载 作者:行者123 更新时间:2023-11-28 05:52:36 25 4
gpt4 key购买 nike

因为我是 swift 的新手,所以我对我的代码有疑问,它到底是什么问题!我有 TableView ,我应该在其中放置一些从 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 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,尽管它应该将第二个数字和其他数字放在它们的单元格行中。

Photo

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"
}
]

crashLog PPhoto

照片: Photo

我的最终答案是所有答案的组合

最佳答案

您错误地填充了表格 View 。首先,您需要在 TableView 中添加部分数:

 func numberOfSections(in tableView: UITableView) -> Int {
return data.count
}

然后你需要在部分中添加行数

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return Pphone.count
}

然后 TableView 应该像这样填充

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "SmsCell") as? SmsTableViewCell

cell.yourLabelInsideCell.text = Nname[indexPath.row]
cell.otherLabelInsideCell.text = Pphone[indexPath.row]
cell.idLabelInsideCell.text = Iid[indexPath.row]
// etc
}

此外,您还需要在收到请求时将您的响应与您的变量进行映射:

func GettingEverthingSuccess(response: smsModelList?) {
print("getting evething success")
guard let response = response else {
return
}
self.data = response


for contactData in data {
if let contacts = contactData.contacts {
for eachmain in contacts {
Pphone.append(eachmain.phoneNumber!)
Nname.append(eachmain.name!)
Iid.append(eachmain.id!)
}
}
}
self.tableview.reloadData()
}

并且不要忘记变量应该以小写字母开头...

关于ios - 所有数据都显示在一行中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52361695/

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