2015-06-20 14 views
12

Tôi đang tạo ứng dụng iOS bằng CloudKit.Bản ghi CloudKit đã xóa Xuất hiện lại

Nó sẽ cho phép người dùng thêm, chỉnh sửa và xóa Products trong đám mây. Người dùng có thể sắp xếp chúng trong Thư mục. Các thư mục này chỉ là các loại bản ghi khác trong cloudkit. Không có giới hạn về mức độ thư mục mà người dùng có thể sử dụng, vì bất kỳ thư mục nào cũng chỉ có thể giữ CKReference vào thư mục chính của nó. Mọi giao tiếp CloudKit trong ứng dụng của tôi xảy ra trong Lớp CloudKitController dành riêng

Tất cả đều hoạt động nhưng không hoạt động sau một thời gian mà không có lý do rõ ràng.

Khi tôi thử nghiệm ứng dụng của mình, tôi thậm chí không sử dụng các thư mục có nhiều cấp độ sâu. Tuy nhiên, sau khi sử dụng nó một lúc (lên đến một tuần), Tất cả các bản ghi đã xóa dường như xuất hiện trở lại trên CloudKit. Một vài lưu ý về điều này:

  • Khi tôi đặt lại trang tổng quan CloudKit và bắt đầu lại, nó hoạt động hoàn hảo. Không có thay đổi mã nào được thực hiện.
  • Rõ ràng, tôi liên tục chỉnh sửa mã của mình khi ứng dụng đang được phát triển. Tuy nhiên, tôi thường không chỉnh sửa các kiểu dữ liệu trong mã của tôi sẽ được lưu trữ trong CloudKit. Khi tôi làm vậy, vấn đề này không phát sinh ngay sau đó
  • Các thay đổi trong Bảng điều khiển CloudKit (ví dụ: thêm kiểu dữ liệu) không gây ra vấn đề này
  • Không lưu trữ bất kỳ bản ghi nào cục bộ, như trong dữ liệu chính. Họ chỉ ngồi trong một singleton miễn là tôi sử dụng chúng
  • Khi tôi truy cập Trang tổng quan CloudKit, Loại bản ghi sản phẩm cho thấy nó có nghĩa là 13 trường hợp. Đôi khi nó quá tệ, ứng dụng của tôi thực sự tải trên 100. Tôi cũng có thể nhìn thấy chúng khi tôi truy cập bản ghi âm, nhưng vẫn RecordType cho biết chỉ có 13 trường hợp
  • Xóa những bản ghi này trong Bảng điều khiển CloudKit chỉ khiến chúng biến mất trong khi. Khi tôi tải lại trang, họ lại bật lên.

Điều này đã diễn ra trong một thời gian và tôi đã kiểm tra mã, Thư viện Apple và google nhiều lần nhưng tôi không thể tìm ra nguyên nhân gây ra sự cố này.

Câu hỏi: Có ai biết gì về cách khắc phục sự cố này không? Như tôi đã nói, tôi đã chạy vào điều này trong nhiều tuần, và thiết lập lại bảng điều khiển CloudKit của tôi chỉ 'chữa trị' nó cho đến một tuần, sau đó nó bật lên một lần nữa. Tôi cũng rất vui khi đăng bất kỳ mã nào nếu điều đó sẽ giúp bạn trả lời câu hỏi của tôi. Tôi đã không đăng bất kỳ mã ban đầu, như tôi không có đầu mối những gì mã có thể gây ra điều này.

Bất kỳ câu trả lời sẽ được đánh giá cao

+0

Tôi đã gặp sự cố tương tự. Tôi tiếp tục cố gắng xóa một trong các loại bản ghi của mình, nhưng các bản ghi sẽ vẫn trở lại sau một thời gian, đó là vấn đề vì loại bản ghi thực sự thay đổi (loại bản ghi cloudkit cho thấy thực sự bỏ qua bất kỳ trường nào không phổ biến giữa cũ và Mới). Làm thế nào khó hiểu. – Narwhal

+0

Điều cần biết là ít nhất tôi không phải là người duy nhất. Trong trường hợp của bạn, vấn đề này có phát sinh sau khi bạn thực hiện một tác vụ cụ thể trong ứng dụng hoặc cơ sở dữ liệu của mình không? – Joris416

+0

Tôi đã rối tung xung quanh một nhóm vì vậy tôi không chắc chắn. Dù sao, tôi đặt lại cơ sở dữ liệu hoàn toàn, và tôi đã làm từ bao giờ. Tuy nhiên, tôi sẽ miễn cưỡng phải làm điều đó nếu rất nhiều dữ liệu đã được lưu lại (cho đến nay, không có gì tôi đã lưu là quan trọng và có thể bị thanh trừng). – Narwhal

Trả lời

2

Apple đã trả lời một báo cáo lỗi mà tôi đã đệ trình rằng vấn đề này nên được giải quyết với iOS 9.Cho đến nay điều đó có vẻ đúng vì vấn đề này đã không xảy ra lần nữa, nhưng hãy cho tôi biết nếu điều này vẫn còn làm phiền ai đó.

+2

Điều này đã xảy ra với tôi bây giờ. Các bản ghi đã xóa không có trong Bảng điều khiển nhưng đã xuất hiện một cách kỳ diệu trong ứng dụng của tôi. – DogCoffee

+0

Vâng, tôi cũng chỉ lãng phí 5 giờ để tìm lỗi trên mặt của tôi. Lỗi này vẫn còn trong iOS 9.3. Đặt lại môi trường phát triển đã giải quyết được sự cố ... – Prine

1

Điều này có thể xảy ra bởi vì các dấu vết bảng điều khiển bên dưới cho biết rằng Apple sử dụng kỹ thuật Tombstone cho sao chép xóa trên một cơ sở dữ liệu phân tán. Một trong các nút có thể có lỗi hoặc phiên bản phần mềm cũ và đang đồng bộ hóa trường giả đá mộ trên hệ thống, khiến bản ghi phải tự phục hồi. Hoặc có thể một cái gì đó mã của bạn đang làm là vô tình đưa những hồ sơ đã xóa trở lại cuộc sống? Một cách giải quyết khác là sử dụng trường boolean xóa mềm của riêng bạn và xem cách hoạt động của nó.

[{ 
    "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" 
     } 
    }, 
    ... 

Vì số lượng bản ghi, có tôi cũng không chính xác.

Các vấn đề liên quan