无法为表视图数据源方法传递计数?

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 没有定义

以上是关于无法为表视图数据源方法传递计数?的主要内容,如果未能解决你的问题,请参考以下文章

为表或集合视图数据创建 plist 文件

无法使用 Jquery 将数据从视图发送到控制器 Asp.net MVC

我无法将数据从控制器传递到 Sencha Touch 2.4 中的视图

如何使用 post 方法将 JSON 数据从登录功能传递到另一个视图控制器?

将数据传递到 Express 中的视图

带有 Sql 视图的实体框架在生成 .sql 文件中显示为表