2016-02-09 17 views
8

Tôi có một bản ghi trong cơ sở dữ liệu công cộng (phát triển) của tôi, với một số trường được điền. Khi tôi sử dụng CKFetchRecordsOperation để tìm nạp bản ghi đó, quá trình tìm nạp thành công, nhưng kết quả CKRecord luôn không chứa khóa. Điều này xảy ra cho dù tôi đặt rõ ràng desiredKeys vào hoạt động tìm nạp của tôi hay để nó là không. Bản ghi và các khóa của nó đã không thay đổi trong một thời gian dài, do đó, nó không phải là một sự chậm trễ tuyên truyền.CKFetchRecordsOperation không bao giờ trả về bất kỳ phím nào

Chỉ có một bản ghi trong cơ sở dữ liệu công khai và ID của nó khớp với những gì tôi nhận được, vì vậy tôi chắc chắn rằng bản ghi chính xác đang được tìm nạp; nó không bao giờ có bất kỳ chìa khóa nào. Ví dụ: mã bên dưới luôn in keys: [].

let op = CKFetchRecordsOperation(recordIDs:[...]) 
op.desiredKeys = [...] // commenting this has no effect 
op.fetchRecordsCompletionBlock = {records, error in 
    if let e = error { 
     print("error:", e)} 
    for (id, r) in records ?? [:] { 
     print("keys:", r.allKeys())}} 
db.addOperation(op) 

Tôi cũng đã thử truy cập các khóa riêng lẻ qua ký hiệu chỉ số, nhưng chúng luôn là nil. Tôi đang thua lỗ vào thời điểm này. Không có lỗi, và bản ghi tôi muốn đang được tìm thấy, vậy tại sao không có bất kỳ khóa nào?

Cập nhật: Tôi đã nhận thấy rằng Bảng điều khiển CloudKit luôn nói "Phát triển trở lại" ở góc dưới cùng bên trái, thậm chí vài ngày sau lần thay đổi cuối cùng của tôi. Hơn nữa, tôi đã cố gắng tạo ra một bản ghi thứ hai (thông qua Bảng điều khiển) và tìm nạp của tôi thậm chí không tìm thấy nó, sau khi để lại nhiều thời gian để tuyên truyền.

Sau một liên kết từ this SO question đến một Apple developer forum thread về vấn đề này, tôi thấy một bài đăng đề xuất nó chỉ xảy ra với các bản ghi có trường nội dung. Tôi sẽ cố gắng thử nghiệm khi tôi có thời gian, mặc dù tôi không thể tránh sử dụng tài sản trong trường hợp này để nó có thể không được nhiều giúp đỡ.

Cập nhật 2: Tôi đã thử đặt lại môi trường phát triển của mình và sau đó tạo lại các bản ghi giống như trước đây. Bên cạnh đó, thông báo "Reindexing" trong Bảng điều khiển CloudKit cuối cùng đã biến mất. Rất tiếc, mã của tôi hiện không tìm thấy bất kỳ hồ sơ nào của tôi, mặc dù mã vẫn không thay đổi và tôi đã kiểm tra mọi thứ ba lần.

Tôi cũng đã thử tạo một loại bản ghi không có các trường Asset (xem phần cập nhật đầu tiên ở trên), nhưng dường như không thay đổi gì cả.

+0

Chỉ cần hỏi rõ ràng, nếu bạn nhìn vào bản ghi trong Bảng điều khiển CloudKit, bạn có thể xem bản ghi và bản ghi có giá trị cụ thể cho các khóa cụ thể? – rmaddy

+0

Có. [padding để đáp ứng SO] – phu

+0

Một câu hỏi rõ ràng khác: Tôi giả sử các hộp kiểm truy vấn được kiểm tra trên các phím trong Bảng điều khiển CloudKit? –

Trả lời

0

Hóa ra tôi đã truy vấn cơ sở dữ liệu riêng tư, khi hồ sơ tôi muốn ở nơi công cộng.

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