0

我有一个NSManagedObject子类来代表 Flickr 上的一个人。我必须通过 URL 请求获取所有要存储在 Internet 核心数据中的属性。我想把从网络上抓取数据的函数放在 Person 类中。但是,请求将异步完成,并且属性将在完成块中设置在对象上。这会因为 Core Data 不是线程安全而导致错误吗?最好有一个单独的类来加载,还是NSManagedObject子类可以工作?

4

2 回答 2

0

我会把它放在一个单独的类中。NSManagedObjectContext对于不同的线程问题(使用's方法解决起来相对简单)而言,与其说是performBlock:为了您的关注点分离,不如说是为了您的关注点分离。数据模型应该只存储数据。它不应该担心下载它。创建一个下载数据的类,然后将原始数据传递给子类(想到NSManagedObject一个名为的方法),以创建您的应用程序可以使用的实际数据对象。+objectFromDownloadedData:(NSData *)

于 2013-05-25T23:32:01.760 回答
0

您可以将网络代码放在NSManagedObject子类中。

然而,这样做是非常糟糕的设计。将网络代码放在模型类中只是糟糕的应用程序架构。它可以工作,但它将是 iOS 上见过的最丑陋、最糟糕的代码。

于 2013-05-26T00:24:15.527 回答