2012-03-04 6 views
6

Tôi dự định gửi một ứng dụng CoreData, nhưng tôi không chắc liệu có nên giới thiệu chức năng iCloud hay không. Câu hỏi này xuất hiện sau khi tôi đã thử nghiệm beta ứng dụng của mình trên iPhone, điền vào nó bằng dữ liệu có liên quan. Sau đó tôi đã thêm chức năng iCloud và bắt đầu thử nghiệm trên iPad. Tôi phát hiện ra rằng chỉ mục mới được đồng bộ hóa giữa các thiết bị, đây là những tentatives tôi đã làm:Giới thiệu iCloud trong các ứng dụng CoreData sau khi được vận chuyển, cách di chuyển dữ liệu cũ

  • Làm việc trên iPhone, điền dữ liệu, cho phép iCloud, bắt đầu làm việc trên trống iPad

Nhưng tôi có một số lạ các vấn đề, chẳng hạn như các thực thể con gắn liền với cha mẹ sai. Sau đó, tôi đã thử điều này.

  • Xuất tài liệu ứng dụng từ iPhone và nhập khẩu iPad

Trong trường hợp dữ liệu này đều giống nhau trên cả hai thiết bị, nhưng tôi vẫn không thể đồng bộ hóa dữ liệu cũ, trong khi cái mới có được một cách hoàn hảo đồng bộ phần lớn thời gian sau giây.

Tôi hiểu rằng đồng bộ hóa CoreData xảy ra với trao đổi nhật ký giao dịch, vì vậy có thể thấy rõ rằng dữ liệu cũ không được đồng bộ hóa. Nhưng vào thời điểm này tôi hỏi liệu có ai đó đã đối mặt với vấn đề này có vẻ khá phổ biến với tôi hay không, hoặc nếu tôi thiếu cái gì đó, một số loại cài đặt hoặc dòng mã để làm việc này như mong đợi.

+0

Yêu thích câu trả lời cho câu hỏi này. Việc tạo một db đã tồn tại trên iCloud là một thứ chưa được giải thích. Tôi có thể nghĩ về hack nhưng không có gì sạch sẽ và đơn giản. –

Trả lời

5

Tôi không nghĩ bạn đã bỏ lỡ bất cứ điều gì. Vấn đề cơ bản là có một cơ sở dữ liệu được lưu trữ trước không được iCloud hỗ trợ. Cái gì đó của nó cũng làm tôi lo lắng. Từ của doc

https://developer.apple.com/library/ios/#releasenotes/DataManagement/RN-iCloudCoreData/_index.html

You should not seed initial content with a prepackaged database file. Instead, you should create the default items in code, or use NSPersistentStoreCoordinator's migratePersistentStore:toURL:options:withType:error: method to migrate a prepackaged database to the required location.

tôi đã không cố gắng sử dụng các migratePersistentStore: ... phương pháp nào cho công việc của tôi nhưng thực tế chủ chốt dường như là việc truyền lõi-dữ liệu qua iCloud qua nhật ký giao dịch dựa trên mọi giao dịch từ lúc sinh ra cơ sở dữ liệu đang được cơ chế theo dõi.

Tôi giả định rằng việc sử dụng migratePersistentStore: ... sẽ gây ra một luồng lớn các giao dịch để tấn công hệ thống.