ios - 如何在运行时检查核心数据属性类型?

标签 ios swift core-data

我想在 Swift 中运行时检查属性数据类型的类型。就像在插入时我想检查实体中的特定属性是否接受日期类型或字符串类型的值。如何在 Swift 中实现这一点。

最佳答案

您始终可以使用 NSAttributeDescription 类型的实体属性描述来查找模型中定义的属性的正确类型。

如果说你有一个NSManagedObject的子类,Person。然后,您可以使用以下代码中的示例在插入之前检查类型,

@objc(Person)
class Person: NSManagedObject {
  @NSManaged
  var name: String

  @NSManaged
  var age: NSNumber

  @NSManaged
  var dateOfBirth: Date
}

let person = NSEntityDescription.insertNewObject(forEntityName: "Person", into: context) as! Person

if let attribute = person.entity.attributesByName["name"],
                      attribute.attributeType == .stringAttributeType {

  // use your code here for custom logic
  print("name is string")
}

if let attribute = person.entity.attributesByName["age"], 
                      attribute.attributeType == .dateAttributeType {

  // use your code here for custom logic

  print("age is date")
}

关于ios - 如何在运行时检查核心数据属性类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44802961/

相关文章:

swift - 将 C 结构转换为 Swift 结构

iphone - 首次启动时重置核心数据

ios - NSFetchedResultsControllerDelegate 委托(delegate)方法未被调用

ios - 如何使用 Autolayout 调整我的 super View 大小以匹配其 subview 的大小?

ios - BLE 只获取 Battery Level 特征值 IOS

iphone - 模拟点击完成按钮

ios - Xcode 如何修复在设备上运行时出现的问题 "Unable to launch"?

json - 在 Swift 中读取 JSON 文件

ios - 如何将 SCNPhysicsBody 定位在 scnnode 的中心

ios - 在 Swift 3 中引用实体属性(核心数据)