2014-09-04 148 views
4

我在NSManagedObject的Core Data生成的子類中使用了Swift。有一個臨時的可選財產標題(可選不是Swift的可選,但核心數據的可選)。 所以我需要一個自定義的getter。我的代碼是Swift中的NSManagedObject子類不能使用自定義存取器?

class ShoppingList: NSManagedObject { 

    @NSManaged var title: String 

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

getter的Objective-C版本正常工作。但是,Xcode告訴我「func title()是無效的重新聲明」。我試圖使用計算屬性,但得到「@Managed屬性不能使用計算屬性」。

所以我的問題是,是否有一種替代方法來獲取Swift版NSManagedObject子類中的自定義訪問器(獲取器)?

回答

0

您可以爲計算屬性使用不同的名稱,並讓它返回標題變量。

@NSManaged var title: String 

var myTitle : String { 
    return self.title 
} 

這樣可以嗎? 蘋果在許多地方都這樣做,用前面的下劃線命名實際變量,並使用相同名稱但沒有下劃線的計算屬性

+0

我需要的是Objective-C版本的getter在Core Data中的等價性Swift中的瞬態屬性。你的方法是不在Core Data Model文件中定義transient屬性,而是直接在源文件中使用它。我認爲它應該工作。但這不是我想要的。 – 2014-09-21 02:54:43

+0

我不太確定有什麼不同。你能否詳細說明一下? – 2014-09-21 20:24:55

+0

正如我的例子,標題是核心數據中的一個瞬態屬性。當我創建一個新的ShoppingList實例時,它是零。所以我需要一個getter來產生它被訪問時的標題。但是,你的方法是讓我從標題中產生一些東西,現在爲零。所以這是不可能的。 – 2014-09-25 03:26:43

相關問題