如何在 Swift 中获取 CoreData 属性的“预期”类型?

Posted

技术标签:

【中文标题】如何在 Swift 中获取 CoreData 属性的“预期”类型?【英文标题】:How to get the 'expected' type of a CoreData attribute in Swift? 【发布时间】:2015-08-14 13:57:14 【问题描述】:

我正在使用 Swift 在 Xcode 版本 6.4 (6E35b) 的 ios SDK 8.4 中编写应用程序。我有一个 .xcdatamodeld 文件,其中包含一个名为“评估”的实体。 'Assessment' 实体有几个类型的属性:String、Bool 和 Float。当我按照许多帖子中的建议通过 NSAttributeDescription 中的 attributeType 访问器进行检查时,我收到一个有意义的 nil 值,因为我使用的实例没有将所有值映射到属性。

来自苹果的参考: "NSAttributeDescription 类用于描述由 NSEntityDescription 实例描述的实体的属性。"

如何以编程方式获取我在 .xcdatamodeld 文件中定义的属性类型?

【问题讨论】:

你这样做...使用NSAttributeDescription。在您描述的情况下, nil 值实际上没有意义。您应该编辑您的问题以包含显示您如何尝试执行此操作的代码,因为正如您所描述的那样,您正在做正确的事情,但不知何故得到了错误的答案。 【参考方案1】:

知道这是旧的,但想用我在 Swift 4 中如何做的答案来更新它:

let attributeDescription = myDataSource.entity.attributesByName

    for thisDescription in attributeDescription 
        if thisDescription.1.attributeType == .integer16AttributeType 
            print(thisDescription.0)
        
    

其中 myDataSource 是我从 Core Data 获取的 NSManagedObject。在我的示例中,我希望创建一个网格,其中 max col 是我的托管对象的最高 int 值。 attributeDescription 是一个元组,0 提供您给属性的字符串标题,1 是属性值的字典。

你可以在这里查看所有的属性类型:

https://developer.apple.com/documentation/coredata/nsattributetype

【讨论】:

以上是关于如何在 Swift 中获取 CoreData 属性的“预期”类型?的主要内容,如果未能解决你的问题,请参考以下文章

在CoreData ios swift3中只获取表的几个属性

这个 CoreData 如何在 swift 3 中获取?

如何使用神奇的 Records Library Swift 获取属性中的所有值

如何在 swift 中使用 MR 从 coreData 中获取数据

Coredata / SWIFT 获取有关系的记录

在 Swift 上使用 CoreData 使用 Fetch Request 进行查询