我有一个 NSSet,其中包含一堆 Detail 对象。每个 Detail 对象都有 .name 和 .text 属性。我想在集合中找到一个特定的详细信息,其中 .name = "memo"并查看其 .text 属性中保存的内容。
我到底该怎么做?
(.indexOf 不会工作。如果我需要以某种方式使用 find 和 .map,或者如果有一种方法可以直接访问 Swift 中的某个特定对象,我现在不会。)
为清楚起见,我使用的是 Core Data,并且我的每个“事件”对象都与许多 Detail 对象有关系。 NSSet of Details 是我从给定事件中得到的集合。
再次,这是它的样子:
Detail object has properties
.name
.text
我从这样的事件“事件”中获取详细信息:
var someDetails: NSSet()?
someDetails = event.details!
现在我有了该事件的一组详细信息。
现在我想访问其 .name = "memo"的详细对象并查看它的 .text 属性是什么。
自己创建详细信息要容易得多,因为我所要做的就是创建详细信息托管对象、分配其属性并将其添加到集合中。当该集合具有我需要的所有对象时,我将它分配给 event.details 并保存回 Core Data。我做梦也没想到访问个人“详细信息”会困难得多。
对于直接访问,我不知道下一步该怎么做。
我是否卡住了循环遍历集合,查看每个对象,然后拉出我想要的那个?
谢谢!
最佳答案
You should use
Set
instead ofNSSet
, however I will answer you question aboutNSSet
.
我想你有这样的类(class)
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)
}
关于swift - 在 Swift 中通过属性名称获取一组对象中的一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40708906/