我在 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
只是错过了它。
我尝试阅读以下内容:
还有什么我想念的吗?
最佳答案
我在这里得到了解决方案:
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/