2016-11-23 54 views
0

我有一個Int16屬性的實體。將Int保存到核心數據的正確方法?

enter image description here

我要救var userRepsCount = Int()這是由以下步進方法設置:

@IBAction func userRepsStepper(_ sender: UIStepper) { 
    userExerciseRepsCounter.text = Int(sender.value).description 
    self.userRepsCount = Int(sender.value) 
} 

我想要將它添加到屬性和正在使用userExercise.reps = userRepsCount這樣做,但我得到的錯誤

無法分配類型「詮釋」的價值爲類型「的Int16」

我的印象是Int16可以存儲int這樣的沒有問題?我在這裏錯過了什麼?

+0

你是否試圖強制將它包裝爲Int16(valueHere)? –

+0

swift建議userExercise.reps = Int16(userRepsCount)但是我還沒有看到任何人刪除代碼這樣做來保存一個Int,並想知道是否有一個正確的方式來存儲它 – infernouk

+0

如果它保存爲Int16,你將不得不包裝它像XCode所建議的那樣。然後,無論何時您需要將它拉出來,您都需要用Int(東西)包裝它,以便您可以正常使用它。很可能蘋果已經將商店價值從Int更改爲Int16,並且您的教程就在該更新之前。 Swift更新改變了很多東西。 –

回答

1

嘗試用Int64(userRepsCount)包裝,然後當你把它與Int(value)包裹它,你處理它

+0

這不起作用 - 請參閱下面的@ SkipMia2w3的答案。 而是將其作爲Int32存儲在數據庫中。 –

+0

@KarolyNyisztor我知道,正如你所看到的,我們討論過它。我忘記更新我的答案,現在更新。 –

+0

這不會工作,因爲DB中的屬性是Int16類型。 OP應該將實體類型更新爲Int32以解決問題。 –

1

之前你不能從32位垂頭喪氣整數較低的16位無無效值的風險。你只能去保存價值。 (IE從16到32或64)。如果你絕對需要,你可以使用Int16(value)進行施放。

我反而會推薦在您的CoreData Integer 32而不是int16中使用。對於您可能正在做的事情,不會在性能/存儲方面產生明顯/顯着的差異。

+0

核心數據中不存在直接的'Int'值選項嗎? kist int16 int32和int64? – infernouk

+1

使用Int64。你沒有理由不去。 –

+0

我會說最好是使用Int32或Int64,這是你的選擇,唯一的區別是Int64可以容納更多的號碼 –