J'essaie de remplir un UITableView avec un tableau d'éléments. Ces éléments sont struct:Accès enum à l'intérieur de la structure
public enum itemNumber {
case Item1
case Item2
case Item3
case Item4
case Item5
case Item6
}
public enum sectionNumber {
case Section1
case Section2
case Section3
case Section4
}
public struct Item {
var itemNumber: itemNumber?
var sectionNumber: sectionNumber?
var checkmark: Bool
init(sectionNumber: Int, itemNumber: Int, checkmark: Bool) {
switch sectionNumber {
case 0: self.sectionNumber = .Section1
case 1: self.sectionNumber = .Section2
case 2: self.sectionNumber = .Section3
case 3: self.sectionNumber = .Section4
default: break
}
switch itemNumber {
case 0: self.itemNumber = .Item1
case 1: self.itemNumber = .Item2
case 2: self.itemNumber = .Item3
case 3: self.itemNumber = .Item4
case 4: self.itemNumber = .Item5
case 5: self.itemNumber = .Item6
default: break
}
self.checkmark = checkmark
}
}
Sur ma classe Controller Je veux vérifier le numéro de section de chaque Item
afin de l'affecter à la section appropriée:
func getNumOfItemsPerSection(section: Int) -> Int {
var num = 0
switch section {
case 0: num = self.items.filter { $0.sectionNumber == .Section1 }.count
case 1: num = self.items.filter { $0.sectionNumber == .Section2 }.count
case 2: num = self.items.filter { $0.sectionNumber == .Section3 }.count
case 3: num = self.items.filter { $0.sectionNumber == .Section4 }.count
default: break
}
return num
}
Cette méthode ne compile pas: L'opérateur binaire '==' ne peut pas être appliqué à des opérandes de type 'sectionNumber?' et '_'
Quelle est la bonne façon de faire cela? Merci!
S'il vous plaît, s'il vous plaît Déclarez vos énumérations avec une lettre majuscule départ ('ItemNumber',' SectionNumber ') et cas minuscules, sinon le code entier est très confus à lire. La raison de l'erreur est que les variables enum sont des options. Comme enum ont toujours un nombre fixe de cas, les variables contenant généralement des enum sont supposées être non-optionnelles – vadian
Encore beaucoup à apprendre ... Je ne connaissais pas cette convention de nommage. Gloire! – gmoraleda