簡體   English   中英

了解iOS Swift中的CoreData

[英]Understanding CoreData in iOS Swift

目前,我正在構建一個應用程序,並試圖讓我了解CoreData的概念。 我已根據此鏈接的建議為該應用創建了數據模型...

蘋果“定義您的數據模型”鏈接

目前,我只是出於開發目的在本地使用一些測試數據。 這是我創建的示例對象類。

import UIKit

func ==(lhs: Recipe, rhs: Recipe) -> Bool {
    return lhs.hashValue == rhs.hashValue
}

class Recipe: Hashable {

dynamic var ID : Int = 0
dynamic var recipeName: String = ""
dynamic var recipeDescription:String = ""
dynamic var servings: Int = 0
dynamic var cookTime: Double = 0.0
dynamic var image: String? = ""

var hashValue : Int {
    get {
        return "\(self.ID)".hashValue
    }
}
init?(id: Int, name: String, description: String, servings: Int, cooktime: Double, image: String) {
    self.ID = id
    self.recipeName = name
    self.recipeDescription = description
    self.servings = servings
    self.cookTime = cooktime
    self.image = image

    if id < 0 || name.isEmpty || description.isEmpty || cookTime < 0 || servings < 0 {
        return nil
    }
}
}

然后,我已經在本地初始化了其中一些對象,以便在開發過程中使用它們,並且它們工作正常。

我的問題是

當需要使用諸如CoreData或RealmSwift之類的存儲時,這種類型的數據模型會不相關嗎? 我會建立一個全新的數據模型(例如在Realm中)嗎? 還是這種數據模型可以與其中一種數據庫模型很好地配合使用?

最重要的是,現在像這樣構建我的數據模型並在大量代碼重構之后合並CoreData或RealmSwift嗎? 如果是這種情況,那么在繼續前進之前,放棄前端開發並構建整個數據模型是否明智?

核心數據和領域使用兩種截然不同的方法來定義模式。

對於Core Data,您需要在Xcode的數據模型編輯器中設計模型,該編輯器會為每個版本創建一捆xcdatamodel文件。 然后,您可以使用Xcode內置功能或某些第三方工具作為生成來生成NSManagedObject實體類。 Core Data可以通過輕量級遷移自動推斷模式的不同版本之間的映射,但這僅在某些限制下有效。 如果您的遷移情況應該更復雜,則可以定義自定義映射模型。

通過一般的Realm和此處的RealmSwift,您可以完全在代碼中定義架構(和遷移)。 您的類必須從Object繼承,並且必須定義符合某些規則的屬性,以便正確識別它們並可以將它們自動保留。

但是,一個持久性框架相對於另一個持久性框架的決定將對整個應用程序產生影響。 例如,Core Data和Realm對多線程有不同的要求。 雖然理論上可以規避,如果你完全封裝的持久層,並與您分享前端僅代理對象,你會松動的同時的組件支持(優勢NSFetchedResultsController / RBQFetchedResultsController ),並進一步便利持久性框架可以提供。 (例如,更改通知,自動更新等)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM