2016-03-07 114 views
1

我的工作在我們的形式的代碼庫擺脫了一堆警告的:核心數據,沒有反向關係

Entity.relationship should have an inverse. 

在一般情況下,儘管我們的代碼不會通過這些逆到達,這聽起來無論如何,放置它們是一個好主意。

我的問題是關於如何做到這一點。

  1. 我應該通過輕量級遷移來做出這些更改嗎?也就是說,我應該創建另一個xcdatamodel嗎?

  2. 對於給定的數據模型,如果我們已經有多個版本/遷移會怎麼樣。例如,假設我們有ReportsDataModel。下面是ReportsDataModel1,ReportsDataModel2和ReportsDataModel3。看起來XCode 7在每個數據模型上都給出了相同的警告。因此,如果我將它們固定到ReportsDataModel4的輕量級遷移中,它似乎不會擺脫先前的警告。

解決此問題的建議方法是什麼?

-Arjun

回答

2

首先,你是正確的,你應該實施逆關係,Xcode中需要它們。這是一個很好的數據庫實踐,如果你不使用它們,你幾乎可以忽略多餘的關係。

是的,您應該可以執行輕量級遷移,也就是說,創建一個新的數據模型並讓Xcode推斷出這些變化。 Here, Apple states輕量級遷移支持添加關係。

關於你的第二個問題,真的,創建另一個數據模型實際上並不能解決舊版本中的警告。您必須將舊模型保留在Xcode中,以便它可以計算輕量級遷移過程。如果您從使用該模型的舊版本中刪除模型和用戶更新,則其數據將被損壞。 (但是,如果您尚未發佈具有特定數據模型的應用程序版本,則可以刪除該數據模型。)

但是,您可以嘗試suppressing the inverse relationship warning entirely

  1. 在Xcode中,單擊您的項目文件。
  2. 單擊Build Settings選項卡。
  3. 搜索MOMC
  4. Suppress momc warnings on missing inverse relationships設置爲是。

編輯大約只有老款擺脫警告:This question建議您可以將舊的數據模型搬出的Xcode和其他地方放置它,並添加一個複製文件的操作來構建階段複製該文件在編譯時返回。這種方式文件和它的無關警告可能是你的方式。對不起,沒有少一些「哈克」解決方案。

+0

這將是很好的壓制個別版本的警告,但我不認爲這是可能的。 –

+0

@TomHarrington - 是的,這正是我所希望的:( – anayini

+0

@TomHarrington我編輯我的答案與可能的解決方案來解決這個Xcode的不幸的限制。 – BradzTech