2017-01-23 81 views
0

我是新來的領域,並沒有找到一個解決方案,滿足了我。處理非持續屬性,頻繁更新的最佳做法

我有一個應用程序,我可以記錄與GPS數據遊覽等。 (有多個不同的對象存儲在領域)。 我創建了一個領域單例,它應該爲我的對象完成所有領域(更新,創建,刪除)。

現在我遇到了以下問題: 我開始旅程並記錄它。首先它被創建,一切都很好。然後我來到了我必須更新我的巡視對象並且只有幾個屬性(基本上每個新的GPS點更新它)的點。另一個要求是,可以有屬性,這些屬性在域中不是永久的,並且只在對象實例上。

所以現在我可以選擇調用realm.add(object,update:true)來覆蓋所有屬性。 我不能說object.prop1 = asdf,object.pro2 = 345,因爲我沒有寫在我的邏輯級別的上下文。所以我可以更新realm.create(type,updatedict,update:true) 但這種方法的一個很大的缺點是,我不得不重新提取對象來「知道」我的對象實例的變化。

所以更新中的對象結果的某些屬性: 創建一個ID(主鍵)和屬性的字典改變我的境界單 呼叫更新並通過所有必要的數據。 在我的領域實例上調用fetch來再次獲取新對象,這導致我鬆開現有的非持久屬性值。

我懷疑我是第一個這樣的要求,但我無法找到一個解決方案:

摘要: 境界Singleton類處理的寫入範圍內的所有領域的行爲 可沒有境界不同對象類持久對象 部分屬性需要部分更新 不想在我的視圖控制器邏輯中具有領域代碼,只能在其管理器中使用。

回答

0

很難建議沒有任何代碼示例的東西,但我個人認爲沒有能力更新模型的各個屬性不是一個好主意。

我覺得你有2種選擇:

  1. 添加一個方法你RealmSingleton,讓您獲得寫上下文(執行寫入事務中的塊),如:

    func updateTour(updateBlock: (Tour) -> Void) { 
        realm.write { 
         updateBlock(currentTour) 
        } 
    } 
    
    ... 
    
    RealmSingleton.shared.updateTour { tour in 
        tour.property = value 
    } 
    
  2. 添加便捷的方法來更新Tour對象的個人屬性:

    RealmSingleton.shared.setTourProperty(value)