2015-06-20 60 views
12

我正在使用CloudKit構建iOS應用程序。已刪除的CloudKit記錄重新出現

它應該允許用戶在雲中添加,編輯和刪除Products。用戶可以在文件夾中組織這些文件。這些文件夾只是cloudkit中的其他記錄類型。用戶可以使用的文件夾級別沒有限制,因爲任何文件夾都可以只持有CKReference到其父文件夾。我的應用程序中的所有CloudKit通信都發生在專用的CloudKitController類中

這一切都有效,但在沒有明確原因的一段時間後停止工作。

當我測試我的應用程序時,我甚至沒有使用多級深度的文件夾。但是,使用一段時間(最多一週)後,所有已刪除的記錄似乎都會重新出現在CloudKit上。有幾點關於此:

  • 當我重置我的CloudKit儀表板並重新開始,它的工作完美。沒有更改代碼。
  • 很明顯,我在編寫應用程序時經常編輯我的代碼。但是,我通常不會編輯要存儲在CloudKit中的代碼中的數據類型。當我這樣做時,這個問題不會在後來出現
  • CloudKit儀表板中的更改(例如添加數據類型)不會導致此問題
  • 不在本地存儲任何記錄(如在覈心數據中)。只要我使用它們,它們就會坐在一個單例中
  • 當我轉到CloudKit Dashboard時,產品記錄類型顯示它具有13個實例。有時候它太糟糕了,我的應用程序實際上加載了100多個。我還可以在進入recordZone時看到它們,但RecordType表示它只有13個實例
  • 在CloudKit Dashboard中刪除這些記錄只會使它們消失而。當我重新加載頁面時,它們再次彈出。

它已經這樣一段時間了,我已經檢查了我的代碼,蘋果圖書館和谷歌很多次,但我無法弄清楚是什麼原因造成這個問題。

問題: 有人會知道如何解決這個問題?正如我所說的,我已經遇到了這個問題好幾個星期了,重置我的CloudKit儀表板只能「治癒」它長達一週的時間,然後再次彈出。如果這能幫助你回答我的問題,我也會很樂意發佈任何代碼。我最初沒有發佈任何代碼,因爲我不知道代碼可能會導致這種情況。

任何答覆將高度讚賞

+0

我一直有完全相同的問題。我一直試圖刪除其中一種記錄類型,但記錄在一段時間後仍然會回來,這是有問題的,因爲記錄類型實際上發生了變化(記錄類型cloudkit顯示實際上忽略了舊的和舊的新)。有多混亂。 – Narwhal

+0

很高興知道,至少我不是唯一一個。在您的情況下,在您的應用程序或數據庫中執行特定任務後會出現此問題嗎? – Joris416

+0

我一直在搞亂一堆,所以我不確定。無論如何,我完全重置了數據庫,並且自那以後我一直在努力。但是,如果已經保存了大量數據(迄今爲止,我保存的任何內容都很重要並且可以清除),我不願意這麼做。 – Narwhal

回答

2

Apple回覆了一個錯誤報告,我已經提出應該用iOS 9解決這個問題。到目前爲止,這似乎是正確的,因爲這個問題沒有再次發生,但請讓我知道這是否仍在困擾某人。

+2

這只是現在發生在我身上。刪除的記錄無法在儀表板中看到,但奇蹟般地出現在我的應用程序中。 – DogCoffee

+0

是的,我也只是浪費了5個小時尋找我身邊的一個bug。這個bug在IOS 9.3中仍然存在。重置開發環境解決了問題... – Prine

1

這可能發生,因爲下面的儀表板跟蹤表明蘋果使用Tombstone技術用於跨分佈式數據庫複製刪除。其中一個節點可能有一個錯誤或舊的軟件版本,並將系統中的墓碑假字段同步回來,導致記錄本身被取消刪除。或者你的代碼正在做的事情是不小心把這些被刪除的記錄帶回來?解決方法是使用您自己的軟刪除布爾字段並查看其行爲。

[{ 
    "results": [{ 
     "tombstone": false 
     "id": "NewItem", 
     "etag": "ibgs5bpj", 
     "recordType": "Items", 
     "fields": { 
      "name": "Malc", 
      "location": { 
       "latitude": 38.0, 
       "longitude": -122.0 
      } 
     }, 
     "conflictLosersEtags": [], 
     "created": { 
      "timestamp": 1435514295943, 
      "user": "_0ac573ae502ca7ca9d763a84b27bc42a", 
      "device": "_2" 
     }, 
     "modified": { 
      "timestamp": 1435514295943, 
      "user": "_0ac573ae502ca7ca9d763a84b27bc42a", 
      "device": "_2" 
     } 
    }, 
    ... 

至於記錄數,是的,我的也是不準確的。