2012-06-08 26 views
1

它必須在IB中創建核心數據模型時指定它將會是什麼類型的屬性,諸如字符串,日期,整數,小數等的選項保存NSDate和NSNumber和/或在相同的核心數據屬性

我的問題是,我如何存儲讓我們說一個NSDate在相同的屬性,並在其他時間,添加一個新的實體,但這次與該屬性的NSNumber。

換句話說,我只想在coredata中獲得一個等於id Object的位置,在提取後,我會檢查[[Object isKindOfClass[NSDate class]]或NSNumber。

我聽說過可變形,但我沒有創建自定義的對象進行存儲。 任何燈光都會很好

回答

0

這是一個非常糟糕的主意。實際上,日期在SQLite中表示爲數字,但核心數據可能會使用不同類型的存儲,因此您只是在假設事物如何運作方面做了太多假設。

這將是更清潔,更容易爲您的實體指定附加屬性,numberdate。然後,您可以輕鬆檢查它們中的任何一個是否爲nil或包含值。即使引入第三個屬性來告訴你,如果對象有日期或數字,將會優於您的設置。

+0

想法是該實體基本上是一個「條目日誌」,可以說只有兩個屬性,時間戳和值。時間戳很明顯,但我的想法是「價值」只是任何「對象」。現在唯一的要求是NSNumber或NSDate,如果我添加一個日期條目,該值應記錄爲日期。或者如果我添加一個條目的距離,值將是nsnumber。也許我可以將nsdate轉換爲nsnumber然後存儲它,我不想只爲一件事添加一個屬性 – jasonIM

+0

再次,我認爲這是糟糕的設計。如果你想要非結構化的「日誌條目」,它們應該是'NSString'類型。你總是可以設計自己的方案來區分類型(例如在'i'之前的一個int,'f'的一個float,'d'的一個日期等等)。編寫掃描儀來正確解釋數據也很容易。但爲什麼要去那裏,如果你可以存儲真正的類型? – Mundi

+0

你的權利人!我即將重新思考所有這些。 – jasonIM

0

我在當前的項目中遇到過這種情況。如果你的值包含int,float,boolean,你可以使用NSNumber作爲屬性,如果它包含NSDate,那麼屬性應該作爲實體中的字符串。

希望得到這個幫助。

+0

OUCH !,如果我使用可變形屬性呢?會有幫助嗎? – jasonIM

+0

如果使用可變形,它將完成這項工作,但如果您使用NSPredicate請求獲取數據,那麼它將爲您創建一個問題。 – iamsult