Tôi đang làm việc trên ứng dụng iPhone sử dụng Dữ liệu chính. Ứng dụng thực hiện cuộc gọi đến dịch vụ web, phân tích cú pháp tệp XML kết quả, sau đó tạo hoặc sửa đổi các đối tượng Dữ liệu cốt lõi trong ứng dụng của tôi. Tôi đã xử lý cuộc gọi dịch vụ web và phân tích cú pháp một cách không đồng bộ, nhưng tôi đã bàn giao dữ liệu được phân tích cú pháp trở lại luồng chính để thao tác các đối tượng Dữ liệu cốt lõi. Tôi cũng muốn chạy quá trình này trong chuỗi nền. (A tạm dừng thứ hai 1-2 không làm cho trải nghiệm người dùng tuyệt vời)Chủ đề NSPersistentStoreCoordinator có an toàn không?
Phương pháp hiển nhiên sẽ là để tạo ra một bối cảnh đối tượng được quản lý đặc biệt cho các chủ đề nền, nhưng sau đó tôi đọc dòng này trong Apple's Core Data Programming Guide:
Điều phối viên lưu trữ liên tục cung cấp cho đối tượng được quản lý của nó bối cảnh mặt tiền của một cửa hàng ảo. Đối với các hoạt động hoàn toàn đồng thời, bạn cần một điều phối viên khác nhau cho mỗi luồng.
Vì vậy, đây là điểm bắt đầu: bạn không thể có hai số NSPersistentStoreCoordinator
s cung cấp quyền truy cập vào cùng một cửa hàng. Tuy nhiên, cuốn sách dữ liệu cốt lõi của Marcus Zarra khẳng định rằng NSPersistentStoreCoordinator
là an toàn luồng và sẽ tuần tự hóa các yêu cầu I/O (trang 157).
Ai đó có thể xóa nội dung này cho tôi không? Có thể có một bối cảnh đối tượng được quản lý thứ hai chạy trên một chuỗi riêng biệt chia sẻ cùng một NSPersistentStoreCoordinator
với luồng chính không? Hay, ngắn gọn hơn, là NSPersistentStoreCoordinator
an toàn chỉ?
FYI bạn có thể có nhiều PSC đang mở cùng một tệp lưu trữ. –