访问最终类的@NSManaged属性时发生Swift链接器错误
我在一个更大的项目中遇到问题,并将其简化为这个简单的代码。 为了演示目的,我使用Model.swift文件创build了一个新的Swift项目:
import Foundation import CoreData class A: NSManagedObject { @NSManaged var foo: String } final class B: A { @NSManaged var bar: String } func testB(obj: B) -> String { return "\(obj.foo) \(obj.bar)" }
这编译,但链接器抱怨访问bar
:
Undefined symbols for architecture armv7: "__TFC21TestFinalManagedClass1Bg3barSS", referenced from: __TF21TestFinalManagedClass5testBFCS_1BSS in Model.o ld: symbol(s) not found for architecture armv7 clang: error: linker command failed with exit code 1 (use -v to see invocation)
final class
中的@NSManaged var
的组合似乎是导致错误的原因。 (包含A
的类inheritance是为了演示foo
属性可以在typesB
的对象上访问,而不是bar
属性。
我正在使用Xcode版本6.1(6A1052d)。
在文档中是否隐藏了一些将NSManagedObject
子类标记为final的规则? 或者这只是编译器/链接器中的一个错误?
这个问题已经在Xcode 6.3 beta中解决了。