CoreData提供整數16,整數32和整數64存儲,但不支持任何符號限定符。您可以將一個無符號整型(32位)存儲爲一個有符號長整型(64位),並確保整個範圍內的值保留,但無符號長整型似乎需要一個128位有符號整數來存儲,當然這不是' t由CoreData支持。有什麼方法可以在coreData中存儲unsigned long?有沒有辦法在覈心數據中存儲unsigned long?
回答
[上一頁評論晉升回答]
聽起來就像是位模式這是對你很重要,而不是整數值本身。你可以將它作爲一個簽名來存儲 - 只需將它轉換爲C簽署的< - >無符號強制轉換不會強制數學正確性並只保留這些位。重新使用它。
後續問題:
通常是在(Obj-)C(++),則可以無符號整數值存儲到與等效符號整型變量,並且反之亦然。 C使用2的補碼整數從符號 - >無符號定義等價於一個位複製,並且這兩個類型的大小相同。換句話說,unsigned - > signed,是「實現定義」 - 在實踐中通常是意味着一個位拷貝。鏘& GCC使用位副本兩種,但如果你想絕對肯定,你可以使用一個union
:
unsigned long r;
long l;
r = (unsigned long)l; // will always work (cast optional)
// following is l = (long)r (cast optional) without "implementation defined" risk
{ union { long sValue; unsigned long uValue; } tmp; tmp.uValue = r; l = tmp.sValue;}
但嚴重的是,我懷疑有人會! (注意:Clang至少會將其編譯爲直接分配(位拷貝)。)
你總是可以將[de]序列化爲一個字符串。它並不是特別乾淨,但只要您可以將其解析爲無符號長整型,它就可以存儲它。
unsigned long
不是128位(還)。
(或者你有沒有128位CPU?)
在Mac上,根據您的CPU架構,它可能是32位或64位。
見有:
NSLog(@"%u", sizeof(unsigned long));
所以基本上一個unsigned long
將是兼容的意志Integer32
或Integer64
。
在這裏稍微誤解了這個問題,OP沒有說unsigned long是128位,但是你看起來需要一個128位有符號值來存儲所有可表示爲無符號long的值 - 從技術上講,你只需要一個65位有符號但是由於某些原因,他們不常見;-)。 'NSNumber'將一個無符號長整型存儲爲有符號的128位值(因爲它在內部將所有整數存儲爲有符號)。 – CRD
如果你真的需要 64位無符號的全精度,你可以把它變形(查看文檔有關存儲非標準持久屬性)。 CoreData讓你存儲任何方式的東西。但是你可能不需要完整的64位精度......?!?
- 1. 核心數據沒有正確存儲
- 2. 使用核心數據存儲無符號long long
- 3. 有沒有辦法用Xcode打開(任意)核心轉儲?
- 4. 有沒有辦法通過核心數據可視化存儲在iPhone應用程序中的記錄?
- 5. 有沒有辦法在meetup上存儲元數據?
- 6. 在C中,'long unsigned'與'unsigned long'一樣有效嗎?
- 7. 有沒有辦法清除核心數據中某些NSMangedObjects的-changedValues?
- 8. 有沒有辦法使用NSPredicate發出NSDeleteRequest與核心數據中的NSFetchRequest?
- 9. 有沒有辦法確保一個數組變量(unsigned int *)將在內存中?
- 10. 有沒有辦法保存HSQLDB數據?
- 11. 在覈心數據中存儲UUID
- 12. 在覈心數據中存儲NSDate(swift)
- 13. 在覈心數據中存儲MKRoute
- 14. 在覈心數據中存儲ABRecordRef
- 15. 在覈心數據中存儲NSInteger
- 16. 將核心數據存儲在NSOperation中
- 17. 錯誤:沒有匹配函數調用'min(long unsigned int&,unsigned int&)'
- 18. 存儲NSAttributedString核心數據
- 19. unsigned long和unsigned long long有什麼區別?
- 20. 在覈心數據中存儲帶有系統時區的NSDate
- 21. 如何將unsigned long long(uint64_t)值存儲在MongoDB文檔中?
- 22. 有沒有辦法將XML.appendChild函數存儲在變量中?
- 23. 有沒有辦法在Oz中存儲函數/過程調用?
- 24. 有沒有辦法在Hadoop中有數據塊的輔助存儲或備份?
- 25. 有沒有辦法建立臨時數據存儲?
- 26. 有沒有辦法將自定義SQL添加(核心數據)提取?
- 27. 有沒有辦法更改核心數據屬性的默認值
- 28. 在覈心數據數據模型中有效地存儲相同的數據
- 29. 如何在沒有時間的核心數據中存儲日期
- 30. 有沒有辦法知道核心數據中的2個實體之間是否存在關係?
不要轉換爲字符串。這非常昂貴。 –
就像我說過的那樣,它不是乾淨的,但它會_work_,即使有可能_many_更好的方法。一般來說,字符串是一個功能「最低公分母」,許多人忘記了它們是UNIX進程間通信的全部基礎。 – cdeszaq
然後人們開始抱怨CoreData速度很慢。 –