我有一个NSSet,它包含一堆Detail对象。每个Detail对象都具有.name和.text属性。我想在集合中找到一个特定的详细信息.name =“memo”,并查看其.text属性中的内容。
我到底该怎么做?
(.indexOf不起作用。如果我需要以某种方式使用find和.map,或者有一种直接访问Swift中某个特定对象的方法,我现在不行。)
为清楚起见,我正在使用Core Data,我的每个“Event”对象都与许多Detail对象有关系。 NSSet of Details是我从特定事件中获得的集合。
再次,这就是它的样子:
详细对象具有属性
.name
的.text
我从活动的“事件”中获取详细信息:
var someDetails: NSSet()?
someDetails = event.details!
所以现在我有了该事件的详细信息。
现在我想访问.name =“memo”的详细信息对象,看看它的.text属性是什么。
创建详细信息本身要容易得多,因为我所要做的就是创建详细信息托管对象,分配其属性并将其添加到集合中。当集合包含我需要的所有对象时,我只是将它分配给event.details并保存回Core Data。我从来没有想过要获得个人“细节”会更加困难。
我不知道接下来要做什么直接访问。
我是不是在整个集合中循环,看着每个物体,并拉出我想要的那个?
谢谢!
答案 0 :(得分:2)
您应该使用
Set
代替NSSet
,但我会回答您关于NSSet
的问题。
我想你有一个像这样的课程
class Detail: NSObject {
let name: String
let text: String
init(name: String, text: String) {
self.name = name
self.text = text
}
}
和NSSet
这样的
let details = NSSet(array: [
Detail(name: "a", text: "1"),
Detail(name: "b", text: "2"),
Detail(name: "c", text: "3"),
Detail(name: "d", text: "4")]
)
现在你想要name
为"a"
的所有榆树,然后写
let results = details.flatMap { $0 as? Detail }.filter { $0.name == "a" }
最后打印出来
for result in results {
print(result.text)
}