2011-11-12 34 views
1

我從互聯網上獲取一些數據,並希望將這些數據存儲在一個對象中,比如說「InternetData」。該類擁有一些屬性,並且該類也綁定到核心數據持久性存儲。ios:創建一個CoreData對象而不立即持續它

我已經從我的應用程序的前一個會話中下載了InternetData,它們已存儲在覈心數據映射到該對象的數據庫中。問題:如果我現在想要下載新的Internet數據,我將至少下載部分相同的新Internet數據的一小部分,這些新數據是真正的新數據,剩下的數據已經存儲在我的數據庫中。而且我想避免我將兩次或更多次存儲相同的數據。

因此,我想用[[InternetData alloc] init]將我下載的東西寫入該對象中,然後我想使用比較方法來比較未綁定的新InternetData對象與數據庫中的舊數據庫進行比較。只有我在舊數據中找不到新對象,我想將新對象添加到持久性存儲中,最後將其存儲到數據庫中。我現在的問題是,我的程序崩潰時,我嘗試創建一個新的InternetData對象,它是獨立於persitence sotre的,做[InternetData的alloc]初始化]時,我的意思是我得到錯誤信息

CoreData: error: Failed to call designated initializer on NSManagedObject class 'InternetData'
[InternetData setDate:]: unrecognized selector sent to instance 0xd26f4f0

所以我的問題:這是我想要的基本上可能創建一個InternetData的對象,首先不會綁定到核心數據持久性存儲,並在一段時間後,我會將新創建的數據複製到第二個有界的InternetData對象(我以有界的方式創建),然後將其存儲到持久性存儲中?

回答

0

有幾種方法可以解決您的問題。首先你不能分配NSManagedObjectModel的+ init實例。所以,你可以做以下存儲臨時數據:

  1. 儲存於NSDictionary
  2. 儲存於一個又一個NSManagedObjectContext
+0

謝謝您的回答。在我的情況下,使用另一個NSManagedObjectContext似乎有點誇張,因此我不想使用這種方法。但是我目前沒有看到NSDictionary對我的情況有什麼幫助,因爲就我看來,我不得不創建一個空的InternetData實例,這又會導致相同的錯誤。 – toom

+0

您可以保存字典中的所有鍵和值。例如,對象'InternetData'具有屬性'data'。您可以存儲在字典中:key =='data',並且該值的值將存儲該數據。 – Nekto

+0

是的,如果我每次只有一個新的InternetData數據包,這將是可能的,但只有在一個很好的方式適用。實際上,我通常會有2個甚至20個新的包,它們會以date_key1 == date1,text_key1 == text1,date_key2 == date2,text_key2 == text2等方式結束。在這種情況下,基於內存的數據存儲中的另一個可能會更合適,或者我創建一個新的助手類,它將與原始類相同,但不受任何數據存儲的約束,這同樣也是一個難以理解的解決方案。但無論如何,感謝您的幫助。 – toom

相關問題