2013-05-25 90 views
0

我有一個NSManagedObject子類來表示Flickr上的一個人。我必須通過URL請求獲取所有要存儲在互聯網核心數據中的屬性。我想把這些函數從Person類中的Web上抓取數據。但是,請求將異步完成,並且屬性將在完成塊中的對象上設置。這是否會導致錯誤,因爲核心數據不是線程安全的?最好是有一個獨立的類來加載,還是子類可以工作?你可以把網絡方法放在一個NSManagedObject子類中嗎?

回答

0

我會把它放在一個單獨的類。不是針對不同的線程問題(通過使用NSManagedObjectContextperformBlock:方法解決這個問題相對簡單),而是用於分離問題。數據模型應該只存儲數據。它不應該擔心下載它。創建一個下載數據的類,然後將原始數據傳遞給NSManagedObject子類(方法名爲+objectFromDownloadedData:(NSData *)),以創建應用程序可以使用的實際數據對象。

0

您可以將網絡代碼置於NSManagedObject子類中。

這將是壯觀糟糕的設計這樣做,但是。將網絡代碼放在模型類中只是可怕的應用程序體系結構。它可以工作,但它會成爲iOS上最醜陋,最糟糕的代碼之一。

相關問題