CoreData 与 iCloud,不与同步通知一起使用

Posted

技术标签:

【中文标题】CoreData 与 iCloud,不与同步通知一起使用【英文标题】:CoreData With iCloud, Not working with sync Notification 【发布时间】:2016-03-10 11:03:14 【问题描述】:

我正在使用 icloud 开发 coredata。 我有这个问题。 除了同步通知之外,带有 icloud 的 coredata 工作正常~ 我的代码在这里~

NSNotificationCenter.defaultCenter().addObserver(self, 
    selector: "changedDataOniCloud:", 
    name: NSPersistentStoreDidImportUbiquitousContentChangesNotification, 
    object: nil)

并假设收到下面的同步通知,

func changedDataOniCloud(notification: NSNotification) 
    self.textView.text = "changedDataOniCloud"

我有 iPhone 和 iPad。 如果在 iphone 中更改了数据,则 ipad 获取同步数据并且更改通知必须响应。 同步数据工作正常,但通知不起作用!

请检查我在 github 中的项目 https://github.com/beauspiring/ios/blob/coredata_icloud/Example/ViewController.swift (分支:coredata_icloud)

【问题讨论】:

【参考方案1】:

我解决了这个问题。

这是一个很好的参考:https://developer.apple.com/library/mac/documentation/DataManagement/Conceptual/UsingCoreDataWithiCloudPG/UsingSQLiteStoragewithiCloud/UsingSQLiteStoragewithiCloud.html#//apple_ref/doc/uid/TP40013491-CH3-SW3

我这里改了addObserver代码~

NSNotificationCenter.defaultCenter().addObserverForName(
    NSPersistentStoreDidImportUbiquitousContentChangesNotification, 
    object: self.moc.persistentStoreCoordinator, 
    queue: NSOperationQueue.mainQueue(), 
    usingBlock:  (noti: NSNotification) -> Void in
            self.textView.text = "Ubiquitous Content Changes"
)

object和queue很重要的两个参数 谢谢我的自己:)

【讨论】:

以上是关于CoreData 与 iCloud,不与同步通知一起使用的主要内容,如果未能解决你的问题,请参考以下文章

iCloud 同步通知 NSPersistentStoreDidImportUbiquitousContentChangesNotification 和核心数据的问题

通过 iCloud 仅同步“一些”我的 coreData

我的 iOS 7 应用程序中没有任何 iCloud 通知触发

iCloud 和 CoreData:更改为 iCloud Store 时的通知(使用现有 iCloud 数据首次启动)

Core Data iCloud 同步图像

在使用 Ensembles 进行 CoreData 和 iCloud 同步之前,我是不是需要任何 iCloud 设置?