2012-01-17 41 views
20

Tôi đã quản lý để có được ứng dụng dữ liệu lõi hiện có của mình để làm việc với iCloud. Sau nhiều ngày học, nó thực sự rất đơn giản. Dường như 3 điều rất cần thiết:Dữ liệu chính Giao thức hợp nhất iCloud

  • để thêm một tập tin quyền lợi (trong Xcode gần đây, điều này có thể được thực hiện bằng bằng cách chọn mục tiêu, chọn "cửa sổ Summary", cuộn xuống, kiểm tra cho phép quyền lợi"

  • để thêm các tùy chọn đúng khi thêm các cửa hàng persisten, trong trường hợp của tôi

    NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: 
        // other options 
        @"<arbitrary name>", NSPersistentStoreUbiquitousContentNameKey, 
        iCloudURL, NSPersistentStoreUbiquitousContentURLKey, 
        nil] 
    

    nơi

    NSURL * iCloudURL = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil]; 
    

'nil' ở đây chỉ ra rằng thông tin từ tệp Entitlements.plist được sử dụng.

  • bật hỗ trợ iCloud cho ứng dụng thông qua cổng nhà phát triển. Điều này có thể liên quan đến việc tạo ra một ID ứng dụng duy nhất, một cái gì đó tôi đã không làm trước đây.

Thực ra, hiện tại tôi không chắc bước cuối cùng này rất quan trọng để phát triển --- tôi đã bật một ứng dụng khác mà không có bước cuối cùng này và có vẻ như nó hoạt động. Nhưng dù sao, tôi đã nhận thấy rằng hai cơ sở dữ liệu lõi hiện có của cùng một ứng dụng trên các iDevices khác nhau sẽ đồng bộ hóa các mục mới vào ngăn xếp dữ liệu lõi, nhưng sẽ không tự động đồng bộ các bản ghi hiện có.

Một cách đồng bộ hóa dữ liệu từ thiết bị A đến B là xóa cơ sở dữ liệu lõi hiện có trên B, sau đó khởi động lại ứng dụng trên B. Tuy nhiên, đây không phải là hợp nhất thích hợp.

Có ai biết cách hợp nhất hai cơ sở dữ liệu lõi hiện có trên các ứng dụng khác nhau tại thời điểm các ứng dụng được nâng cấp để sử dụng hỗ trợ iCloud, tức là sử dụng các tùy chọn ở trên và tất cả?

Cảm ơn

+0

có lẽ bạn có thể tìm thấy sự giúp đỡ trong câu hỏi này tương tự http://stackoverflow.com/questions/6588180/can-you-sync-coredata-with-icloud –

+0

bắt đầu ở đây - https://devforums.apple.com/thread/126670 –

+0

Không, mặc dù ứng dụng Công thức nấu chứa mã hữu ích (trong số đó thêm cửa hàng vào điều phối viên lưu trữ liên tục trong nền --- hữu ích khi hợp nhất dữ liệu lõi lớn cơ sở dữ liệu) nó không giải quyết vấn đề hợp nhất hai phiên bản dữ liệu lõi tồn tại từ trước trên hai thiết bị khác nhau. Tôi đã tìm kiếm một cách để phát lại các bản ghi giao dịch bằng cách nào đó. – davidav

Trả lời

1

Tôi đã không làm điều đó, nhưng khi lưu vào iCloud có nguy cơ cao cho thông tin mâu thuẫn nếu dữ liệu cũng đã được cập nhật hoặc tồn tại trên một thiết bị khác. Nếu xung đột không được giải quyết đúng cách thì lưu lượng giữa hai thiết bị sẽ không xảy ra đúng cách. Giải quyết các xung đột có thể phức tạp nhưng đơn giản nhất là chỉ để cho chiến thắng gần đây nhất. Apple có các thủ tục xử lý xung đột được kích hoạt khi lưu để ghi đè lên cửa hàng phổ biến xác định xung đột.

+0

Việc triển khai iCloud dữ liệu cốt lõi thực sự khá tốt, bạn thường không chạy quá nhiều xung đột. Có lẽ nếu bạn đang chỉnh sửa cùng một bản ghi trong hai trường hợp khác nhau, có lẽ bản ghi đã lưu cuối cùng sẽ thắng thế. – davidav

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