Tôi có sau thiết lập Lõi dữ liệu trong ứng dụng của tôi:Core Data: bối cảnh mẹ và thay đổi công tác tuyên truyền
Persistent Store Coordinator
^Background MOC (NSPrivateQueueConcurrencyType)
^Main Queue MOC (NSMainQueueConcurrencyType)
Đây là mã khởi tạo:
_backgroundContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
[_backgroundContext setPersistentStoreCoordinator:self.coordinator];
_mainContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
[_mainContext setParentContext:_backgroundContext];
tôi sử dụng MOC nền cho nhập khẩu lớn lượng dữ liệu. Tôi cũng sử dụng nó để thực hiện các yêu cầu tìm nạp phức tạp trong nền và sau đó chuyển các ID đối tượng vào hàng đợi chính để tìm nạp các đối tượng bằng cách sử dụng các ID này.
Điều này hoạt động khá tốt. Tuy nhiên, tôi không chắc chắn làm thế nào để cho hàng đợi chính MOC biết về những thay đổi được thực hiện trong nền MOC. Tôi biết rằng nếu tôi thực hiện một yêu cầu tìm nạp trên hàng đợi chính MOC, nó sẽ nhận được những thay đổi, nhưng đó không phải là những gì tôi muốn.
Bạn có thể sử dụng thông báo NSManagedObjectContextObjectsDidChangeNotification
được đăng bởi nền MOC và gọi mergeChangesFromContextDidSaveNotification:
trên hàng đợi chính MOC không? Điều này sau đó sẽ gây ra thông báo NSManagedObjectContextObjectsDidChangeNotification
của hàng đợi chính MOC để kích hoạt. Tôi đang nghe thông báo này trong bộ điều khiển chế độ xem của tôi và kiểm tra userInfo
để thay đổi và hiển thị lại dữ liệu cho phù hợp. Tôi nghĩ bạn thường làm theo cách này nếu bạn có một điều phối viên lưu trữ liên tục với hai MOC đính kèm. Nhưng tôi không chắc đó có phải là cách làm đúng hay không, khi bạn có bối cảnh con/cha mẹ.
Có thể biến BGPrivateMOC thành con của mainMOC và truyền bá tất cả thay đổi BG bằng cách lưu BGPrivateMOC không? Tôi đã cố gắng làm như vậy, nhưng mainMOC của tôi đã không nhận được bất kỳ thay đổi nào từ BGPrivateMOC. Quyết định thử stack của bạn. Nó hoạt động như một say mê. –
Ồ, đã xảy ra sự cố, nó không hoạt động nữa. Hợp nhất không cập nhật ngữ cảnh chính. –
Bạn cần cung cấp thêm chi tiết hơn ... có thể nhập câu hỏi mới với chi tiết về vấn đề cụ thể của bạn ... và có thể nhận xét ở đây về câu hỏi đó nếu bạn muốn tôi xem ... –