objective-c - swift 中的 swift_dynamicCastClassUnconditional 问题

标签 objective-c swift nsmanagedobjectmodel

我在 swift 中有以下 NSManagedObject:

import Foundation
import CoreData

public class User: NSManagedObject {

    @NSManaged public var first_name: String
    @NSManaged public var last_name: String
}

我有一个类提供以下函数的值:

- (id)getUserAtIndexPath:(NSIndexPath *)indexPath {
    User *user = [self.fetchedResultsController objectAtIndexPath:indexPath];
    return user;
}

当我从 Objective-C 类调用此函数时,一切正常。我这样称呼:

User *user = [self.userAccessor getUserAtIndexPath:indexPath];

我可以从那里继续。当我像这样从 Swift 类中调用它时:

let user: User = self.userAccessor.getUserAtIndexPath(indexPath) as User

我每次都得到 swift_dynamicCastClassUnconditional。我做错了什么吗?为什么相同的函数在 Objective-C 而不是 Swift 中工作?我什至设置了一个断点,并且可以在 Swift 调用上确认返回是一个有效变量!一些 Swift 只是错过了它。

我尝试阅读以下内容:

http://jamesonquave.com/blog/understanding-the-fatal-error-cant-unwrap-optional-none-errors-in-swift/

AnyObject array returned by NSFetchRequest errors with "Swift dynamic cast failed" upon cast in Swift XCode 6 Beta 4 in XCTestCase

还有什么我想念的吗?

最佳答案

我在这里得到了解决方案:

Swift: Breakpoint in CoreData library

基本上我必须将 @objc(User) 放在托管对象代码的正上方。因此,如下所示:

@objc(User)
public class User: NSManagedObject {
    @NSManaged public var first_name: String
    @NSManaged public var last_name: String
}

这解决了问题。结案。

关于objective-c - swift 中的 swift_dynamicCastClassUnconditional 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26307335/

相关文章:

ios - 一种临时保留核心数据模型的重复版本的方法

ios - UITableView 延迟加载的图像在手指关闭之前不会加载

快速返回错误的字典索引

ios - 如何激活 iOS 8 自定义键盘中的双击、按住按键?

ios - 跨多个上下文重用 NSFetchRequest 时崩溃

ios - 以编程方式设置核心数据 - NSManagedObjectContext 从何而来?

objective-c - 如何实现与 ARC 兼容的 Objective-C 单例?

ios - Objective-C block - 转换 Swift 不工作

iphone - 如何从 iPhone 的图库中删除选定的照片?

swift - 如何使用 Alamofire Image 在 ImageView 上快速添加 UIActivity Indicator