Как добавить данные в NSMutableArray в ios swift - PullRequest
0 голосов
/ 22 мая 2018

Сейчас я работаю над приложением заказа еды, когда добавляю элементы в любой массив, и мне нужно передать эти элементы в 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)
}

Мой CartDataModal:

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

измой ViewController Я получаю данные из моего Restaurant.plist

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 Ответ

0 голосов
/ 22 мая 2018

Вам нужно изменить свою структуру:

class CartDataModal: NSObject {

static let shared_Inst = CartDataModal()

var cartArrayDict = [[String: Any]]()

}

Вам нужно инициализировать массив словаря перед вставкой.Таким образом, вы можете инициализировать в struct или можете инициализировать перед использованием в соответствии с вашим использованием.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...