如何基于数组

时间:2018-10-11 22:47:18

标签: ios arrays swift struct

我有一些UIButtons代表不同的Restaurants,其内容来自结构。在此结构中是一个带有每个餐厅标签的数组。 如何隐藏基于标签的UIButton? 目前,我暂时有这个想法:

func filterFavorites() {
    if importedDataA.filterTags.contains(filterPresetRestaurantTypeService) {
        isVisibleA = true
    } else {
        isVisibleA = false
    }
    if importedDataB.filterTags.contains(filterPresetRestaurantTypeService) {
        isVisibleB = true
    } else {
        isVisibleB = false
    }
    if importedDataC.filterTags.contains(filterPresetRestaurantTypeService) {
        isVisibleC = true
    } else {
        isVisibleC = false
    }
    if importedDataD.filterTags.contains(filterPresetRestaurantTypeService) {
        isVisibleD = true
    } else {
        isVisibleD = false
    }
    if importedDataE.filterTags.contains(filterPresetRestaurantTypeService) {
        isVisibleE = true
    } else {
        isVisibleE = false
    }
    if importedDataF.filterTags.contains(filterPresetRestaurantTypeService) {
        isVisibleF = true
    } else {
        isVisibleF = false
    }
    if importedDataG.filterTags.contains(filterPresetRestaurantTypeService) {
        isVisibleG = true
    } else {
        isVisibleG = false
    } 

等...

然后...

func filterApply() {
    if isVisibleA == true {
        if UserDefaults.standard.bool(forKey: "hideFilteredObjects") == true {
            cellA.isHidden = false
        } else {
            //cellA.popIn()
        }
    } else {
        if UserDefaults.standard.bool(forKey: "hideFilteredObjects") == true {
            cellA.isHidden = true
        } else {
            //cellA.popOut()
        }
    }
}

2 个答案:

答案 0 :(得分:0)

假设您有一个结构:

struct ImportedData{
    var filterTags: [Int]
}

 let buttons = [UIButton]() // add your buttons

 let importedData = [ImportedData]() // add your importedData

 (0..<(buttons.count)).map{buttons[$0].isHidden =     UserDefaults.standard.bool(forKey: "hideFilteredObjects") && (!importedData[$0].filterTags.contains(filterPresetRestaurantTypeService))}

答案 1 :(得分:0)

除了创建结构的几个实例ImportDataA,importedDataB,importedDataC等之外,您还可以创建实例数组,例如:

for data in importedData{
  if data.filterTags.contains(filterPresetRestaurantTypeService){
    isVisibleG = true
  } else {
    isVisibleG = false
  } 
}

然后,您可以使用for循环遍历以下实例,而不是使用if语句逐一遍历所有这些项目:

$(file)

希望有帮助。