Swift 将 NSManagedObject 转换为子类失败

标签 swift core-data nsmanagedobject

我有一个 NSManagedObjects 数组。 其中这是一个截断的 println:

[<NSManagedObject: 0x7f9cbc18cf30> (entity: PTKRMessage; id: 0xd00000000004001a <x-coredata://7EEF4956-FA8F-4DE9-B94C-CF612B40AA77/PTKRMessage/p1> ; data: {...}), <NSManagedObject: 0x7f9cbc18d790> (entity: PTKRMessage; id: 0xd00000000008001a <x-coredata://7EEF4956-FA8F-4DE9-B94C-CF612B40AA77/PTKRMessage/p2> ; data: {...})]

当我尝试将一个元素分配给一个变量作为 NSManagedObject 子类 (PTKRMessage)

let message = self.tableData[indexPath.row] as! PTKRMessage

我收到以下错误:

Could not cast value of type 'NSManagedObject_PTKRMessage_' (0x7f9cbc320d10) to 'tradersofdom.PTKRMessage' (0x102dda910).

PTKRMessage 在 PTKRMessage.swift 中定义为:

class PTKRMessage: NSManagedObject {
     @NSManaged var content: String
     ...
}

它可能与 cast NSManagedObject to class -> Swift dynamic cast failed 有关但情况和错误信息有所不同。

最佳答案

尝试将其更改为

@objc(PTKRMessage)
class PTKRMessage: NSManagedObject {
     @NSManaged var content: String
     ...
}

关于Swift 将 NSManagedObject 转换为子类失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32425068/

相关文章:

ios - 无法使用 Chilkat 库构建项目

ios - 类型 'AnyObject' 不符合协议(protocol) 'BooleanType'

ios - NSManagedObjectContext 保存但不持久化

objective-c - 核心数据获取请求中需要谓词吗?

ios - 从 NSArray 中删除 double (NSManagedObjects) 的更好方法(也是逻辑缺陷)

ios - 从多个 CloudKit 记录创建 MapKit Circle 覆盖

ios - 将内容左对齐 - SwiftUI iOS 14 Widget

ios - CoreData困境: entity without inverse relationship

ios - 如何在删除多行时实现 NSFetchedResultsController 委托(delegate)?

iphone - 核心数据。 ExecuteFetchRequest 出现故障 NSManagedObject(不在 RAM 中)