2012-01-02 39 views
20

Tôi gần như đã hoàn thành bản phát hành 1.1 ứng dụng iOS đầu tiên của mình, trong đó tôi đã thực hiện hai thay đổi nhỏ cho mô hình dữ liệu cốt lõi của mình. Cụ thể hơn, tôi đã thêm hai thuộc tính vào một trong các bảng của tôi. Đây là ứng dụng dữ liệu cốt lõi đầu tiên của tôi và do đó cập nhật dữ liệu cốt lõi đầu tiên của tôi thành ứng dụng trực tiếp và tôi hơi lo lắng về mã vận chuyển có thể không hoạt động đối với người dùng hiện tại của tôi. Vì đó là một bản cập nhật nhỏ, tôi đoán rằng phương pháp di trú của Táo sẽ làm, nhưng tôi không muốn đoán.Cập nhật ứng dụng iOS với mô hình dữ liệu lõi đã cập nhật

Mã liên quan như sau:

NSError *error = nil; 
__persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]]; 
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: 
         [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, 
         [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil]; 
if (![__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error]) 
{ 

    //NSLog(@"Unresolved error %@, %@", error, [error userInfo]); 
    abort(); 
}  

Trong 1.1 Tôi đã thêm NSDictionary *options.

Trong điều khiển xem, tôi chắc chắn rằng các hàng cần không phải là con số không như thế này:

if (currentPage.inputType == @"drawing") { 
    [pageView changeToDrawing]; 
} else if (currentPage.inputType == @"text") { 
    [pageView changeToText]; 
} else { 
    currentPage.inputType = @"text"; 
    [pageView changeToDrawing]; 
} 

Về cơ bản, là những thay đổi này đủ hay tôi phải làm cái gì khác?

Trả lời

24

Here is a very helpful article liên quan đến phiên bản Core Data trả lời câu hỏi của bạn.

Để tổng hợp bằng một vài từ, bạn sẽ cần thêm phiên bản mô hình mới vào dự án của mình. Điều này là cần thiết cho quá trình di chuyển.

Sửa

liên kết trên đã thay đổi và sẽ chuyển hướng bạn đến đường dẫn sau: Core Data Model Versioning and Data Migration

Nếu vẫn thất bại, google: Core Data Model Versioning and Data Migration apple developer.

+0

Cảm ơn câu trả lời của bạn, tôi có một câu hỏi liên quan. Tôi đã thêm các thuộc tính trước khi tạo phiên bản mô hình mới, tôi có nên xóa các thuộc tính mới khỏi phiên bản 1.0 của mình và chỉ có chúng trong phiên bản mô hình dữ liệu 2.0 của tôi hay không? Cảm ơn! – Anders

+2

Tuyệt đối bạn nên xóa chúng khỏi 1.0 và thêm vào phiên bản tiếp theo. Gần đây tôi đã từng thực hiện điều này một chút. 1.0 nên được * chính xác * giống như những gì hiện đang được triển khai hoặc nếu không bạn sẽ nhận được một ngoại lệ. Điều này bao gồm cả thuộc tính cũng như các mối quan hệ. – Jeremy

+0

Ah, cảm ơn. Có nó để làm việc. Đã làm như bạn đề nghị. :) – Anders

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