2013-08-26 26 views
2

UIManagedDocument處理行級別是否爲我處理或我是否需要處理這些,他的答案是它處理行級別的衝突。也許我誤解了他,但我沒有看到這一點。UIManagedDocument處理conflcts

所以我要問幾個關鍵問題在這裏得到一些澄清的希望,這同樣是UIManagedDocument

如果我有一個表,作者具有第一和姓字段會發生什麼,如果: A)我與作者有一排:'Jon Do' - 它已同步到兩個設備。然後,我將一個設備上的名字從'Jon'編輯爲'John',並將另一個設備上的姓氏從'Do'編輯爲'Doe'。 iCloud和UIManagedDocument如何處理這個問題?我是否會收到某種我需要回復才能處理衝突的通知?我試着下面的代碼,但我從來沒有得到過顯示通知:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_ondocumentStateChangedNotification:) name:UIDocumentStateChangedNotification object:self.openedDoc]; 

B)如果我不同的作者加入到兩個設備,使現在有兩行合併將UIManagedDocument處理,對我還是做我需要自己做點什麼?如果我需要自己做點什麼,我需要做些什麼?我嘗試註冊NSPersistentStoreDidImportUbiquitousContentChangesNotification,但這似乎從來沒有通過我。我要註冊哪種上下文?我嘗試這樣做:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_onPersistentStoreDidImportUbiquitousContentChanges:) name:NSPersistentStoreDidImportUbiquitousContentChangesNotificationobject:self.openedCaddy.managedObjectContext.parentContext]; 

還做我需要處理NSManagedObjectContextDidSaveNotification自己的UIManagedDocument或不UIManagedDocument處理一下嗎?

任何和所有的幫助,非常感謝,我真的在這裏掙扎。我在推出iOS 5時採用了iCloud和UIManagedDocument,並且儘管缺乏documentaiton但是設法發佈了一款產品,但是現在我希望iCloud真正起作用,而不是簡單地做一個贏家採取所有文件同步方法。

回答

4

我想通了。 UIManagedDocument確實處理行級別的衝突。

我從未見過任何名稱的原因:NSPersistentStoreDidImportUbiquitousContentChangesNotificationobject通知是因爲我沒有正確設置moc的持久存儲選項。要獲取核心數據以開始同步,必須至少設置以下選項:NSPersistentStoreUbiquitousContentNameKey & NSPersistentStoreUbiquitousContentURLKey

2年前我第一次開始使用iCloud時,我總是認爲setUbiquitous:itemAtURL:destinationURL:error:的呼叫對我來說是這樣做的,而且是相當的,但事實並非如此。 setUbiquitous:itemAtURL:destinationURL:error:只是告訴iCloud同步該URL處的文件,它與核心數據無關 - 認爲dropbox。要讓UIManagedDocument的核心數據部分同步這兩個選項,需要進行設置。

我已經開始了一個github回購,澄清了一些這一點,使起牀和運行UIManagedDocument容易得多。 http://github.com/dtrotzjr/APManagedDocument

希望這可以幫助別人。我覺得這很快就沒有意識到這一點,但是當我兩年前第一次實現iOS 5的iCloud同步時,文檔很少,iCloud工作不好,所以我認爲我的行爲很正常。