ios - 如何在 UITableView iOS Swift 中加载数组值 int 单元而不创建多个自定义单元?
问题描述
我在表格视图中有多个标签。为标签左侧创建了一个数组。现在我正在尝试从数组模型中为每个标签加载数据。但它说索引超出范围,因为它的模型数组索引为 0。
这是我的模型:
class PrItemDetailModel {
var Material: String?
var Description: String?
var FixedVendor: String?
var VendorName: String?
var PurchOrg: String?
var PurchGroup: String?
var qtyUoM: String?
var valuationPrice: String?
var TotalValue: String?
var DeliveryDate: String?
var MatGrp: String?
var Plant: String?
var StorageLocation: String?
var ReqTrack: String?
var AAC: String?
var ItemCategory: String?
var GLAccount: String?
var CostCenter: String?
var Order: String?
var WBS: String?
var ProfitCenter: String?
init(Material: String?, Description: String?, FixedVendor: String?, VendorName:String?, PurchOrg: String?, PurchGroup: String?, qtyUoM: String?, valuationPrice: String?, TotalValue: String?, DeliveryDate: String?, MatGrp: String?, Plant: String?, StorageLocation: String?, ReqTrack: String?, AAC: String?, ItemCategory: String?, GLAccount: String?, CostCenter: String?, Order: String?, WBS: String?, ProfitCenter: String?){
self.Material = Material
self.Description = Description
self.FixedVendor = FixedVendor
self.VendorName = VendorName
self.PurchOrg = PurchOrg
self.PurchGroup = PurchGroup
self.qtyUoM = qtyUoM
self.valuationPrice = valuationPrice
self.TotalValue = TotalValue
self.DeliveryDate = DeliveryDate
self.MatGrp = MatGrp
self.Plant = Plant
self.StorageLocation = StorageLocation
self.ReqTrack = ReqTrack
self.AAC = AAC
self.ItemCategory = ItemCategory
self.GLAccount = GLAccount
self.CostCenter = CostCenter
self.Order = Order
self.WBS = WBS
self.ProfitCenter = ProfitCenter
}
}
这是为标签创建的数组:
var PrItemTitleLblArray = ["Material#", "Description", "Fixed Vendor#","Vendor Name", "Purch Org", "Purch Group", "Qty | UoM", "valuation Price", "Total Value", "Delivery Date", "Mat Grp", "Plant", "Storage Location", "Req Track#", "AAC", "Item Category", "G/L Account", "Cost Center", "Order", "WBS", "Profit Center"]
这是模型中的数组:
var prItemArray = [PrItemDetailModel(Material: "", Description: "Bottles", FixedVendor: "KP04", VendorName: "KP Suppliers", PurchOrg: "1000", PurchGroup: "002", qtyUoM: "40.000 EA", valuationPrice: "EUR 40.00", TotalValue: "EUR 1,600.00", DeliveryDate: "09/12/2014", MatGrp: "00807", Plant: "1100", StorageLocation: "", ReqTrack: "", AAC: "Cost Center", ItemCategory: "0", GLAccount: "000040000", CostCenter: "0000010000", Order: "", WBS: "0000000", ProfitCenter: "0000001402")]
这是我在 tableview 中使用的代码:
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell") as! PrItemCellTableViewCell
cell.material.text = PrItemTitleLblArray[indexPath.row]
cell.materialvalue = prItemArray[indexPath.row]
return cell
这是我的json回复:
"results": [
{
"PoDocNo": "4500022400",
"Item": "00010",
"Material": "RMECC_MOB1",
"StorageLocation": "3001",
"MatGroup": "00107",
"Quantity": "2.000",
"OrderUnit": "KG",
"NetPrice": "1000.000",
"UnitofPrice": "1.000",
"ItemCat": "0",
"Requistor": ""
},
{
"PoDocNo": "4500022400",
"Item": "00020",
"Material": "RMECC_MOB1",
"StorageLocation": "3001",
"MatGroup": "00107",
"Quantity": "2.000",
"OrderUnit": "KG",
"NetPrice": "1000.000",
"UnitofPrice": "1.000",
"ItemCat": "0",
"Requistor": ""
}
]
任何帮助非常感谢请...
解决方案
@Parameswaran V
在下面检查我的简单更新答案,你能在传递 json 时建议我最好的方法吗?
您可以创建结构以形成您所需的记录,如下所示,
struct DemoItems {
var key: String?
var value: String?
}
fileprivate var demoItems: [DemoItems]?
fileprivate func loadDemoItems() -> [DemoItems] {
var tempItems = [DemoItems]()
let item1 = DemoItems.init(key: "Material#", value: "")
let item2 = DemoItems.init(key: "Description", value: "Bottles")
let item3 = DemoItems.init(key: "Fixed Vendor#", value: "KP04")
let item4 = DemoItems.init(key: "Vendor Name", value: "KP Suppliers")
let item5 = DemoItems.init(key: "Purch Org", value: "1000")
tempItems.append(item1)
tempItems.append(item2)
tempItems.append(item3)
tempItems.append(item4)
tempItems.append(item5)
return tempItems
}
在 viewDidLoad 之类的,
demoItems = loadDemoItems()
if let tempDemoItems = demoItems {
print(tempDemoItems)
print(tempDemoItems[0].key)
print(tempDemoItems[0].value)
}
输出:
[permisdesauver_dev.DemoItems(key: Optional("Material#"), value: Optional("")), permisdesauver_dev.DemoItems(key: Optional("Description"), value: Optional("Bottles")), permisdesauver_dev.DemoItems(key: Optional("Fixed Vendor#"), value: Optional("KP04")), permisdesauver_dev.DemoItems(key: Optional("Vendor Name"), value: Optional("KP Suppliers")), permisdesauver_dev.DemoItems(key: Optional("Purch Org"), value: Optional("1000"))]
Optional("Material#")
Optional("")
所以你的 cell.material.text = tempDemoItems[indexPath.row].key & cell.materialvalue.text = tempDemoItems[indexPath.row].value
希望对你有帮助!
推荐阅读
- javascript - 遍历包含另一个数组javascript的数组
- node.js - 为什么我的 Socket.io 客户端无法使用 NGINX 反向代理连接到 AWS EC2 节点应用程序
- java - Java - 文件写入/读取适用于 Windows 但不适用于 Mac
- sql - Rails - 在对过滤出的值执行分组函数时创建 nil 值
- python - 无法在要转储到 Excel 文件中的单元格周围绘制边框
- powershell - 如何在 PowerShell 终端中查看进度条上方的 msi 状态消息
- xcode - 如何防止 Xcode 的 CoreSimulatorService 运行?
- python - 在合同中添加一个定期到期日期字段作为 recurring_next_date 字段
- python - Python套接字编程如何将文件数组制作成json格式
- python - 函数输出失败