访问最终类的@NSManaged属性时出现Swift链接器错误

时间:2014-10-28 19:28:36

标签: ios core-data swift nsmanagedobject

我在一个更大的项目中遇到问题,并将其归结为这个简单的代码。出于演示目的,我在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 varfinal class的组合似乎是导致错误的原因。 (包含A的类继承是为了证明foo属性可以在B类型的对象上访问,但不能访问bar属性。)

我正在使用Xcode版本6.1(6A1052d)。

关于将NSManagedObject子类标记为final的文档中是否隐藏了一些规则?或者这只是编译器/链接器中的错误?

1 个答案:

答案 0 :(得分:0)

此问题已在Xcode 6.3 beta中解决。