Swift中的NSManagedObject子类无法使用自定义访问器?

4

我在使用Core Data生成的NSManagedObject子类中使用Swift。有一个瞬态可选属性title。(这里的可选不是Swift的optional, 而是Core Data的可选类型。) 所以我需要自定义getter。我的代码如下:

class ShoppingList: NSManagedObject {

    @NSManaged var title: String

    func title() -> String {
        return "something"
    }
}

Objective-C版本的getter函数可以正常工作。然而,Xcode告诉我“函数title()是无效的重新声明”。我尝试使用计算属性,但是得到了“@Managed property不能使用计算属性”的错误。

因此,我的问题是,在Swift版本的NSManagedObject子类中是否有获取自定义访问器(getter)的替代方法?

1个回答

0

您可以为计算属性使用不同的名称,并使其返回标题变量。

@NSManaged var title: String

var myTitle : String {
   return self.title
}

这对你有用吗? 在许多地方,苹果公司都是通过在实际变量名前加下划线来命名,而在计算属性中使用相同的名称但不带下划线。


我需要的是在Swift中与Objective-C版本的Core Data瞬态属性getter方法相当的东西。你的方法是不在Core Data模型文件中定义瞬态属性,而是直接在源文件中使用它。我认为这应该可以工作。但这不是我想要的。 - Owen Zhao
我不太确定它们之间的区别是什么。你能详细解释一下吗? - Thomas Krajacic
就像我的例子一样,标题是核心数据中的瞬态属性。当我创建一个新的ShoppingList实例时,它是nil的。因此,我需要一个getter在访问时生成标题。然而,你的方法是要求我从现在为nil的标题中生成某些东西。所以这是不可能的。 - Owen Zhao
如果我使用您的方法,我必须先删除核心数据模型中标题的定义。然后在源文件中创建它。这将起作用。但我的模型还没有完成,因为模型文件中未定义瞬态属性。 - Owen Zhao

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接