我想用元素数组填充UITableView。这些元素是结构:访问结构内的枚举
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
}
}
在我的控制器类我要检查每个Item
的部分号,以便将其分配给适当的部分:
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
}
此方法不编译: 二元运算符'=='不能应用于类型'sectionNumber?'的操作数和'_'
这样做的正确方法是什么? 谢谢!
请,请与起始大写字母('ItemNumber','SectionNumber宣布你的枚举')和小写的情况,否则整个代码读起来非常混乱。错误的原因是枚举变量是可选项。由于枚举总是有固定数量的情况,通常包含枚举的变量应该是非可选的 – vadian
还有很多东西需要学习...不知道这个命名约定。奖励! – gmoraleda