我有餐厅名称、项目和价格以以下形式存储 ( { 汉堡点 ( { 项目名称 = 商品价格 = } ) } )
现在我想访问数组元素并传递给 RestaunrantViewController,当我选择具有每个餐厅名称对应名称的 collectionviewcell 时,另一个 View Controller 中有一个 UITableView,我想显示 itemName 和 ItemPrice。 但我不知道我该怎么做
我正在使用它访问 ResturantFile.plist
let pathUrl = Bundle.main.path(forResource: "ResturantFile", ofType: ".plist")
print("path url is",pathUrl)
let finalArray = NSMutableArray(contentsOfFile: pathUrl!)
print("final Array is",finalArray)
并没有选择方法代码是:
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath){
let pathUrl = Bundle.main.path(forResource: "ResturantFile", ofType: ".plist")
print("path url is",pathUrl)
let finalArray = NSMutableArray(contentsOfFile: pathUrl!)
print("final Array is",finalArray)
let itemNames = finalArray?.sorted(by: {$0 == "ItemName"})// this is not working for me
// pass restaurant name and image to the restaurntviewcontroller via viewcontroller
if blockClosure != nil{ blockClosure(restaurantImageArray[indexPath.row] ,restaurantNameArray[indexPath.row] , data)
}
}
这是我的 ResturantFile.plist
最佳答案
在 RestaurantViewController 中,您需要像这样使用选定的餐厅名称添加过滤器(将“selectedRestroName”替换为来自先前 Controller 的选定餐厅名称):
let pathUrl = Bundle.main.path(forResource: "ResturantFile", ofType: ".plist") print("path url is",pathUrl)
let finalArray = NSMutableArray(contentsOfFile: pathUrl!)
///finalArray is plish Data array, and "selectedRestroName" is the selected restaurant which is you passing from closure
let selectedDict = finalArray.filter { (object) -> Bool in
(object.keys).contains(where: {$0 == "selectedRestroName"})
}.first
let finalArraaOfSelectedRestorentData = Array(selectedDict!.values)
或者
let finalArraaOfSelectedRestorentData = selectedDict["selectedRestroName"]
关于ios - 访问数组元素并将其与所选数据的单元格匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50247805/