Swift中带有结构字符串的TableView节
我正在学习斯威夫特,我正在碰壁。我正在尝试将字符串的组件自动分配给UITableView中的不同部分 我有一个结构:Swift中带有结构字符串的TableView节,swift,uitableview,Swift,Uitableview,我正在学习斯威夫特,我正在碰壁。我正在尝试将字符串的组件自动分配给UITableView中的不同部分 我有一个结构: struct Test { var name: String? var value: Float? var isfavorite:String? } var TestInformation = [String:Test]() 然后,我用值填充TestInformation,得到如下字符串:[Test(n
struct Test {
var name: String?
var value: Float?
var isfavorite:String? }
var TestInformation = [String:Test]()
然后,我用值填充TestInformation,得到如下字符串:[Test(name:“Foo1”,value:“1.32”,isfavorite:“favorite”),Test(name:“Foo2”,value:“1.27”,isfavorite:“notfavorite”)
我还有另一个数组,其中放置了节标题:
let actuallyfavorited: Array<AnyObject> = ["favorite","notfavorite"]
let actuallyfavorited:Array=[“favorite”,“notfavorite”]
我可以很好地获得要在表视图中显示的name
和value
,但我不知道如何根据isfavorite
的值是否设置为favorite
或notfavorite
将单元格分配给两个不同部分中的一个
我希望有人能给我指出正确的方向:)
谢谢您的帮助。我想您希望在第一部分显示喜爱的项目,在第二部分显示其他项目。我不知道
测试信息
中的键是什么,但情况与下面的代码类似
假设项
是结构测试的数组
。
代码:
我建议您仅在需要时使用optionals,并且您有一个表示状态的布尔值,然后使用函数从列表中过滤元素来生成节。以下是一个基本示例:
struct Test {
let name:String
let value: Float
let isfavorite:Bool
}
func favorites(tests: [Test]) -> [Test] {
return tests.filter{$0.isfavorite}
}
func hasFavorites(tests: [Test]) -> Bool {
return tests.filter{$0.isfavorite}.count > 0
}
func nonFavorites(tests: [Test]) -> [Test] {
return tests.filter{!$0.isfavorite}
}
let testInformation = [
Test(name: "Foo1", value: 1.32, isfavorite: true),
Test(name: "Foo2", value: 1.27, isfavorite: false)]
let testInfoFiltered = favorites(testInformation)
编辑
如果您得到“无法使用类型为“(()->”的参数列表调用“筛选器”,请使用以下更改编辑代码:
struct Test: Equatable {
let name:String
let value: Float
let isfavorite:Bool
}
func ==(lhs: Test, rhs: Test) -> Bool {
return lhs.name == rhs.name && lhs.value == rhs.value && lhs.isfavorite == rhs.isfavorite
}
你好谢谢你的回答。我无法理解此行:
返回项目。筛选器({$0.isfavorite==“favorite”})。计数
。items
和filter
应该参考什么?items看起来像[Test(name:“Foo1”,value:“1.32”,isfavorite:“favorite”),Test(name:“Foo2”,value:“1.27”,isfavorite:“notfavorite”),…],items.filter({$0.isfavorite==“favorite”})
只是“过滤”了唯一的收藏夹项。它也是一个数组,只包含项中的“收藏夹”项。因此,整个表达式的意思是“在itmes
”谢谢,但我仍然得到一个错误[String:ViewController.Test]'没有名为“filter”的成员。
:(您好,谢谢您的回答,当我在操场上尝试此操作时,我得到一个错误,无法使用类型为“()->”的参数列表调用三个函数strange的“filter”。它对我有效:{name“Foo1”,值1.320000005245209,isfavorite true}是我从TestInfo筛选列表中得到的。您使用的是什么XCode/Swift版本?我添加了一个编辑,希望能够解决您的特定配置错误。
struct Test: Equatable {
let name:String
let value: Float
let isfavorite:Bool
}
func ==(lhs: Test, rhs: Test) -> Bool {
return lhs.name == rhs.name && lhs.value == rhs.value && lhs.isfavorite == rhs.isfavorite
}