我在一个较大的项目中遇到了问题,并将其归结为这个简单的代码。出于演示目的,我创建了一个新的 Swift 项目,在 Model.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
in a final class
似乎是导致错误的原因。 (该类继承自A
包括在内是为了证明foo
属性可以在类型的对象上访问B
,但不是bar
财产。)
我使用的是 Xcode 版本 6.1 (6A1052d)。
文档中是否隐藏了一些关于标记的规则NSManagedObject
子类作为最终的?或者这只是编译器/链接器中的错误?
此问题已在 Xcode 6.3 beta 中得到解决。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)