1

我有以下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/

在 XCTestCase 中的 Swift XCode 6 Beta 4 中进行转换时,NSFetchRequest 返回的 AnyObject 数组出现“Swift 动态转换失败”错误

还有什么我想念的吗?

4

1 回答 1

1

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

Swift:CoreData 库中的断点

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

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

这解决了问题。结案。

于 2014-10-10T21:17:14.023 回答