代码之家  ›  专栏  ›  技术社区  ›  Gurjit Singh

如何将数据附加到iOS Swift中的nsmutableArray中

  •  -2
  • Gurjit Singh  · 技术社区  · 6 年前

    我目前正在开发一个食品订购应用程序,当我向任何数组中添加项目时,我需要将这些项目传递给 cartVC 通过 CartDataModal 在哪里 cartArrayDict NSMutableArray 类型。但是当我插入 SelectedDict 应用程序崩溃了,有人能帮我吗?

    我的代码是:

    var restMenu = [[String:Any]]()
    
    func addTapped(cell: RestaurantItemViewCell)
    {
        //get the indexPath for add button click
        let indexPath = self.restTableView.indexPath(for: cell)
         print("the indexPath is", indexPath?.row)
    
        print("all obj is",restMenu)
    
        var selectedDict = restMenu[(indexPath?.row)!]
        print("selected dict is",selectedDict)
    
         selectedDict["ItemQuant"] = cell.itemQuantityLabel.text
    
        print("selected dict is",selectedDict)
    
    
        // Append In Cart Modal
        CartDataModal.shared_Inst.cartArrayDict.insert(selectedDict, at: (indexPath?.row)!)
    
    
        print("rest menu is",restMenu)
    
        restMenu.remove(at: (indexPath?.row)!)
        print("rest menu is",restMenu)
    
        restMenu.insert(selectedDict, at: (indexPath?.row)!)
    
        print("restmenu is",restMenu)
    }
    

    我的车数据模式:

    class CartDataModal: NSObject {
        static let shared_Inst = CartDataModal()
        var cartArrayDict: [String:Any]!
    }
    

    从我的视图控制器中,我正在从我的餐馆获取数据。

    func moveToDetailController(img:UIImage,name:String)
    {
        print("the rest name is", name)
    
        let pathUrl =  Bundle.main.path(forResource: "ResturantFile", ofType: ".plist")
        print("path url is",pathUrl as Any)
    
        let finalArray = NSMutableArray(contentsOfFile: pathUrl!)
        print("final Array is",finalArray)
    
        let restaurantNames = finalArray?.firstObject as? NSDictionary
        print("resturant name is",restaurantNames as Any)
    
    
        if let menuDataArray:[[String:Any]] = restaurantNames?.value(forKey: name) as? [[String:Any]]
        {
    
            print("menu data is",menuDataArray)
    
        let restVC = self.storyboard?.instantiateViewController(withIdentifier: "RestaurantViewController") as! RestaurantViewController
    
        restVC.tempImg = img
        restVC.tempTitle = name
    
        restVC.restMenu = menuDataArray
    
        self.navigationController?.pushViewController(restVC, animated: true)
        }
    }
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Jogendar Choudhary    6 年前

    您需要修改结构:

    class CartDataModal: NSObject {
    
    static let shared_Inst = CartDataModal()
    
    var cartArrayDict = [[String: Any]]()
    
    }
    

    插入前需要初始化字典数组。所以您可以在结构中初始化,也可以在使用前根据您的使用初始化。