2012-11-15 26 views
18

Có ai có thể mô tả về từng phương pháp trong 5 phương pháp thiết lập không?Sự khác nhau giữa 5 phương pháp thiết lập Bản ghi Magical là gì?

(void) setupCoreDataStack; 
(void) setupAutoMigratingDefaultCoreDataStack; 
(void) setupCoreDataStackWithInMemoryStore; 
(void) setupCoreDataStackWithStoreNamed:(NSString *)storeName; 
(void) setupCoreDataStackWithAutoMigratingSqliteStoreNamed:(NSString *)storeName; 

Mỗi người làm gì và trường hợp sử dụng cho từng trường hợp là gì?

Trả lời

27
setupCoreDataStack 

Sử dụng tính năng này khi bạn mới bắt đầu với MagicalRecord. Điều này sẽ, như các phương pháp tuyên bố, thiết lập ngăn xếp dữ liệu cốt lõi mặc định của bạn. Các phần của ngăn xếp cũng được biết và bao gồm: NSPersistentStore, NSPersistentStoreCoordinate, NSManagedObjectModel và NSManagedObjectContext mặc định. Ít nhất một trong số này phải được khởi tạo và được cấu hình đúng để Dữ liệu cốt lõi hoạt động. MagicalRecord cung cấp phương pháp duy nhất này để cấu hình ngăn xếp của bạn với một cửa hàng khăng khăng SQLite nằm trong Hỗ trợ/Library/Application //. Sqlite

setupAutoMigratingDefaultCoreDataStack 

Khi bạn phiên bản mô hình của bạn, bạn sẽ cần phải di chuyển dữ liệu của bạn. Phương thức này sẽ thực hiện tương tự như phương thức trước (ở trên), nhưng cũng sẽ bật Tự động di chuyển.

setupCoreDataStackWithInMemoryStore; 

Đôi khi, chẳng hạn như khi bạn viết bài kiểm tra đơn vị, bạn muốn dữ liệu của mình biến mất khi ứng dụng chấm dứt. Phương pháp này cũng sẽ thiết lập một ngăn xếp CoreData (như đã đề cập ở trên) nhưng thay vì một cửa hàng SQLite, nó tạo ra một lưu trữ liên tục trong bộ nhớ hệ thống (RAM).

setupCoreDataStackWithStoreNamed:(NSString *)storeName 

Đôi khi bạn muốn tùy chỉnh tên tệp nơi dữ liệu của bạn cư trú. Phương pháp này không giống như là người đầu tiên, cụ thể là thiết lập các dữ liệu cốt lõi ngăn xếp, và đặt một cửa hàng SQLite trong vị trí cụ thể, nhưng thay vì .sqlite, các cửa hàng được đặt tên storeName.sqlite

setupCoreDataStackWithAutoMigratingSqliteStoreNamed:(NSString *)storeName 

này hiện giống như phương pháp trên, nhưng cũng cho phép tự động di chuyển. Bạn sẽ cần phải làm điều này khi bạn phiên bản mô hình của bạn và có một di chuyển đơn giản mà chỉ cần được kích hoạt.

Bạn có thể đọc thêm về sự di cư của Core Data trên Apple's Core Data Reference Documentation

+1

Làm thế nào để bạn kết hợp một tập tin xcdatamodeld để MagicalRecord? MagicalRecord có tôn trọng các thuộc tính xcdatamodeld như "Lưu trữ trong Tệp Bản ghi Bên ngoài" không? – zakdances

+1

Theo mặc định, MagicalRecord sẽ sử dụng phương thức mergedModelsFromBundle: với tham số nil. Điều này cũng nằm trong mã soạn sẵn (khủng khiếp) do Xcode cung cấp. Điều này tự động tính toán nó cho bạn. Có những người trợ giúp bổ sung để chỉ định một tệp mô hình khi cần (kiểm tra đơn vị là một nơi phổ biến khác khi điều này là cần thiết) – casademora

+0

Tôi vẫn còn một chút nhầm lẫn ... mergedModelsFromBundle sẽ tự động quét cấu trúc dự án cho các tệp xcdatamodeld? Điều gì sẽ xảy ra nếu bạn có nhiều hơn một xcdatamodeld? Các thực thể (và các thuộc tính của chúng) mà bạn khai báo trong các tệp xcdatamodeld đó có cần khớp với NSManagedObjects mà bạn phân lớp cho MagicalRecord không? – zakdances

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