无法为表视图数据源方法传递计数?
Posted
技术标签:
【中文标题】无法为表视图数据源方法传递计数?【英文标题】:Unable to pass count for table view datasource methods? 【发布时间】:2017-10-13 06:14:47 【问题描述】:这里我需要为表视图数据源方法提供计数以显示字典项谁能帮助我如何将计数传递给表视图以便如何声明模型类数组?
我在这里声明了这样的数组var cartModel : CartItems?
这里是json下载功能的代码
func cartItemsDownloadJsonWithURl(cartApi: String)
let url = URL(string: cartApi)!
let task = URLSession.shared.dataTask(with: url) (data, response, error) in
if error != nil print(error!); return
do
if let jsonObj = try JSONSerialization.jsonObject(with: data!) as? [[String:Any]]
for item in jsonObj
self.cartModel = CartItems(dict: item as [String : AnyObject])
DispatchQueue.main.async
self.tableDetails.reloadData()
let totalCount = String(describing: self.cartModel.count)
NotificationCenter.default.post(name: Notification.Name("UpdateBadgeNumberNotification"), object: totalCount)
catch
print(error)
task.resume()
struct CartItems
let itemId :Int
let sku : String
let quantity : Int
let name : String
let price : Int
let productType : String
let quoteId : Int
let extensionAttributes : [ExtensionAttributes]
init(dict : [String:Any])
if let arr = dict["items"] as? [[String: AnyObject]]
var filterArr = [ExtensionAttributes]()
for obj in arr
filterArr.append(ExtensionAttributes(dict: obj))
self.extensionAttributes = filterArr
else
self.extensionAttributes = [ExtensionAttributes]()
self.itemId = dict["items_id"]! as! Int
self.sku = dict["sku"] as! String
self.quantity = dict["qty"] as! Int
self.name = dict["name"] as! String
self.price = dict["price"] as! Int
self.productType = dict["product_type"] as! String
self.quoteId = dict["quote_id"] as! Int
这是json数据
[
"item_id": 241,
"sku": "24-MB01",
"qty": 1,
"name": "Joust Duffle Bag",
"price": 34,
"product_type": "simple",
"quote_id": "3bfc8f55e41cbbb2b3b95346d38f9de1",
"extension_attributes":
"image_url": "https://192.168.1.11/magento2/pub/media/catalog/product/cache/image/265x265/beff4985b56e3afdbeabfc89641a4582/m/b/mb01-blue-0.jpg"
]
【问题讨论】:
请详细说明您要完成的工作。顺便说一句:为什么要将[String:Any]
转换为[String:AnyObject]
。这很荒谬。正如多次提到的,Swift 3+ 中的 JSON 字典是 [String:Any]
,没有必要强制转换它。并且不要将 String(describing
初始化器用于 Int
[ "item_id": 241, "sku": "24-MB01", "qty": 1, "name": "Joust Duffle Bag", "price": 34, "product_type ": "simple", "quote_id": "3bfc8f55e41cbbb2b3b95346d38f9de1", "extension_attributes": "image_url": "192.168.1.11/magento2/pub/media/catalog/product/cache/image/…" ] 我有一个这样的数组来获取我编写的模型类的数据,以便如何声明模型类以获取产品数量
产品计数意味着字典中的数组现在只有 1 个它也可能增加@vadian
但在同一个控制器中,您可以随时使用cartModel.count
获取项目数量
将数据源数组总是声明为非可选的空数组:var cartModel = [CartItems]()
【参考方案1】:
将您的 cartModel
对象从 var cartModel : CartItems?
更改为 var cartModel = [CartItems]()
和
替换这一行
self.cartModel = CartItems(dict: item as [String : AnyObject])
与
self.cartModel.append(CartItems(dict: item as [String : AnyObject]))
现在,使用self.cartModel.count
【讨论】:
兄弟那么如何从扩展属性字典中获取图片url 尝试使用self.cartModel[indexPath.row]. extensionAttributes.first
兄弟发送你的extensionAttributes
我自己也提到过
不,ExtensionAttributes 没有定义以上是关于无法为表视图数据源方法传递计数?的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 Jquery 将数据从视图发送到控制器 Asp.net MVC
我无法将数据从控制器传递到 Sencha Touch 2.4 中的视图