swift - 在 Swift 中通过属性名称获取一组对象中的一个对象

标签 swift core-data properties set

我有一个 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 of NSSet, however I will answer you question about NSSet.

我想你有这样的类(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/

相关文章:

swift - 自定义运算符错误 - 无法传递不可变值

ios - 通过 Xcode import auto 提示的这条红线是什么

objective-c - 我的核心数据数据模型中的实体之一没有被删除

python - 我在做模拟电视

java - GWT 中的动态属性

ios - 为什么 iOS UIWebView 的 loadRequest 方法没有返回值?

ios - 如何根据多边形要素的属性值设置填充颜色?

ios - 核心数据: bundle.main.url Thread 1 fatal error

core-data - Xcode 4中核心数据中建立的关系规则在哪里?

php - 不存在的模型类属性,无错误和Zend Framework