LƯU Ý: API này đã xuất hiện khi tôi viết bài này vào năm 2012 và chi tiết đã thay đổi. Hãy cập nhật điều này nếu bạn muốn. Tôi không làm việc trên bất kỳ dự án Cocoa/ObjC nào vào lúc này vì vậy tôi không phải là người tốt để giữ cho cập nhật này, thật không may. Dường như ý chính xác là chính xác.
Dữ liệu chính cung cấp một bộ công cụ giúp quản lý sự kiên trì đối tượng, tức làkhả năng lưu và sau đó tìm lại bộ đối tượng (NSManagedObject
) từ một số loại bộ nhớ.
Khi bạn làm việc với các đối tượng Dữ liệu cốt lõi, bạn làm như vậy bằng cách sử dụng NSManagedObjectContext
, mà bạn nhận được từ một số NSPersistentStoreCoordinator
. PSC lần lượt nói chuyện với một hoặc nhiều hơn NSPersistentStore
lớp con, xử lý các hoạt động thực tế trên cửa hàng. (Hãy suy nghĩ tạo/đọc/cập nhật/xóa dựa vào cơ sở dữ liệu.)
Dữ liệu chính hỗ trợ hai loại cửa hàng chính: NSPersistentStore
và NSAtomicStore
. Một cửa hàng liên tục có thể được coi như một cơ sở dữ liệu: bạn có thể lưu dần, cập nhật và tìm nạp các tập bản ghi tùy ý từ nó. Một cửa hàng nguyên tử là một đại diện 'tất cả hoặc không' của một đồ thị đối tượng. Nó được dự định là một đại diện trong bộ nhớ của một tập tin có cấu trúc.
Các loại cửa hàng Core Data đi kèm với là:
NSSQLLiteStoreType
(NSPersistentStore
)
NSInMemoryStoreType
(NSPersistentStore
)
NSXMLStoreType
(NSAtomicStore
)
NSBinaryStoreType
(NSAtomicStore
)
NSPersistentStore
rõ ràng bị cấm được phân loại, vì vậy cho đến bây giờ, không có cách nào để tạo chương trình phụ trợ cửa hàng không nguyên tử của riêng bạn. Đó là, nếu bạn muốn tồn tại và truy vấn đại diện của các đối tượng của bạn từng phần như trái ngược với trong một khối lớn ('tải toàn bộ đồ thị', 'lưu toàn bộ đồ thị') bạn đã không may mắn. Cho đến khi iOS5 giới thiệu NSIncrementalStore
.
NSIncrementalStore
là lớp trừu tượng (xuống từ NSPersistentStore
) có phương pháp bạn triển khai để cung cấp bộ điều hợp giữa kho dữ liệu mà bạn kiểm soát và thế giới của Dữ liệu cốt lõi. Bạn có thể sử dụng nó để bọc một API từ xa, hoặc nếu bạn nghiêng đến mức bạn có thể bọc một cái gì đó như NULevelDB hoặc NanoStore (mặc dù tôi không chắc chắn tại sao bạn lại làm điều đó).
+1 Rất tốt giải thích. – fatuhoku
Tôi nghĩ rằng bạn có nghĩa là để nói 'NSIncrementalStore' và NSAtomicStore, không phải là" 'NSPersistentStore' [đó là lớp cơ sở] và NSAtomicStore". –
Candidly Tôi không có ý tưởng - Tôi đã viết này 4 năm trước và đã không viết bất kỳ mã cho iOS trong khoảng một khoảng thời gian tương tự. Lấy làm tiếc! – jdc