【问题标题】:Can you put networking methods in an NSManagedObject subclass?您可以将网络方法放在 NSManagedObject 子类中吗?
【发布时间】:2013-05-25 23:04:37
【问题描述】:

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

【问题讨论】:

    标签: ios multithreading networking core-data thread-safety


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2014-01-24
        • 2010-11-25
        • 2018-12-16
        • 1970-01-01
        • 2013-08-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-26
        相关资源
        最近更新 更多