Swift中带有结构字符串的TableView节

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

我正在学习斯威夫特,我正在碰壁。我正在尝试将字符串的组件自动分配给UITableView中的不同部分

我有一个结构:

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
}