2016-02-11 63 views
2

背景:
我對Swift非常非常新,但也是一般的編程,所以提前道歉。我唯一真正的數據庫經驗是MySql,即使這樣也不是那麼熱。主鍵在Swift中的新對象

我通過構建基本目標/習慣跟蹤應用學習Swift + Realm。

任務:
我有一個目標對象,其包括稱爲「id」主鍵。目標可能是「減肥」。我還有一個Streak對象,其中包括7個每日「簽到」。用戶設定一個目標,並每天簽到。

每個目標可以有多個「條紋」,例如經過7天的短跑/連勝後,用戶可以開始另一場比賽。你也可以有多個目標。爲了實現這一點,我試圖複製一個自動遞增的目標ID的功能,這也是一個主鍵。這也會記錄在相應的條紋中。

我的問題:
我遇到的問題是,當我試圖存儲另一個目標,我得到一個錯誤:

*** Terminating app due to uncaught exception 'RLMException', reason: 'Primary key can't be changed after an object is inserted.' 

這是我AddGoalController代碼。我添加了評論來解釋我的想法。實際上,即使我評論按鈕中的所有內容,並且只有getNextID(),我仍然會得到相同的錯誤。

我的問題是:

1.是否有一個更優雅的方式來實現我具有連接多個條紋目標或目標的目的。只有最新的連勝活躍。
2.是什麼導致這個錯誤?


提前

回答

3

newID非常感謝不應該是一個實例變量,它應該從你的函數返回。

您還需要將newID = goal!.id++更改爲newID = (goal!.id + 1),以便您不編輯該值,您需要獲取該值並將其添加到結果中,而不是添加一個值,然後獲取該值。