我陷入了一个无法找到解决方案的境地。看到了很多类似的问题,但无法弄清楚。
因此,我有一个视图控制器,它显示两种类型的表格视图列表
1)销售
2)采购
我已经决定同时使用同一个视图控制器。
在我的视图控制器中,我想根据销售和采购创建数组。
因此,我有一个视图控制器,它显示两种类型的表格视图列表
1)销售
2)采购
我已经决定同时使用同一个视图控制器。
enum SalesRowType {
case salesOrderBooking
case salesInvoicing
case salesGrossContribution
}
enum PurchaseRowType {
case purchaseOrders
case amended_non_amended
case pending_grn_po
}
并且
// BASE PROTOCOL
// ListRowType -> has title,image property
protocol HomeSubItemType:ListRowType {
associatedtype RowType
var type:RowType {get}
}
// PURCHASE ITEMS
struct PurchaseSubItem: HomeSubItemType {
typealias RowType = PurchaseRowType
var image: UIImage
var title: String
var type: PurchaseRowType
}
// SALES ITEMS
struct SalesSubItem : HomeSubItemType {
var image:UIImage
var title:String
var type:SalesRowType
}
在我的视图控制器中,我想根据销售和采购创建数组。
if let type = type {
switch type {
case .purchase:
self.title = "Purchase"
self.itemList = [
PurchaseSubItem(image: UIImage(named: "purchase-orders")!, title: "Purchase Orders", type: .purchaseOrders),
PurchaseSubItem(image: UIImage(named: "amended-non")!, title: "Amended/NON-Amended-UNAutho-PO", type: .purchaseOrders),
PurchaseSubItem(image: UIImage(named: "purchase-pending")!, title: "Pending GRN PO", type: .purchaseOrders)]
case .sales:
self.title = "Sales"
self.itemList =
[
SalesSubItem(image: UIImage(named: "sales-order-booking")!, title: "Sales Order Booking", type: .salesOrderBooking),
SalesSubItem(image: UIImage(named: "sales-invoice")!, title: "Sales Invoicing", type: .salesInvoicing),
SalesSubItem(image: UIImage(named: "sale-gross")!, title: "Sales Gross Contribution", type: .salesGrossContribution)]
default:
assertionFailure("Only Purchase and sales are handle here")
}
}
但是我无法声明数组
var itemList = [HomeSubItemType]()
//ERROR HERE
协议“HomeSubItemType”只能用作泛型约束,因为它具有Self或关联类型要求
请帮助我解决这个问题。先感谢您的帮助。
[SubItem<Any>]
时,我无法添加类型为PurchaseRowType.purchaseOrders
的项目,它会显示错误,如 **Cannot assign value of type '[SubItem<PurchaseRowType>]' to type '[SubItem<Any>]'**。有什么帮助吗? - Prashant Tukadiyavar itemList = [ListRowType]()
? - vadianRowType
。 - Prashant Tukadiya