我在一个更大的项目中遇到问题,并将其归结为这个简单的代码。出于演示目的,我在Model.swift文件中创建了一个新的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)
@NSManaged var
中final class
的组合似乎是导致错误的原因。 (包含A
的类继承是为了证明foo
属性可以在B
类型的对象上访问,但不能访问bar
属性。)
我正在使用Xcode版本6.1(6A1052d)。
关于将NSManagedObject
子类标记为final的文档中是否隐藏了一些规则?或者这只是编译器/链接器中的错误?
答案 0 :(得分:0)
此问题已在Xcode 6.3 beta中解决。