2010-06-05 22 views
5

Tôi đã cố gắng lưu dữ liệu và hợp nhất với CoreData và đa luồng cho ứng dụng iPhone. Nhưng tôi không thể nhận được các đối tượng được quản lý trong chuỗi chính sau khi hợp nhất.Cách lấy đối tượng sau khi bối cảnh CoreData sáp nhập

Tôi đã viết code như thế này:

[managedObjectContext performSelectorOnMainThread:@selector(mergeChangesFromContextDidSaveNotification:) 
             withObject:notification 
            waitUntilDone:YES]; 

[self performSelectorOnMainThread:@selector(didMerged:) withObject:objectIds waitUntilDone:YES]; 

Vì vậy, tôi đã cố gắng để vượt qua objectIds để có được hợp NSManagedObject trong các chủ đề chính mà đã được tạo ra trong chủ đề khác. Lúc đầu, tôi đã thử phương thức "objectWithId" nhưng nó tạo ra các đối tượng lỗi. Sau đó, tôi đã thử phương thức "existingObjectWithID" nhưng nó đã tạo ra các đối tượng một phần và một số khác không có Lỗi sau:

[Error] Error Domain=NSCocoaErrorDomain Code=133000 "Operation could not be completed. (Cocoa error 133000.)" 

Điều gì là sai? Có cách nào để lấy tất cả các đối tượng của objectIds sau khi sáp nhập trong một chủ đề khác?

Cảm ơn bạn.

Trả lời

2

Có vẻ như hợp nhất ngữ cảnh của bạn không thành công.

developer documentation on error 133000

NSManagedObjectReferentialIntegrityError = 133000

NSManagedObjectReferentialIntegrityError Error code to denote an attempt to fire a fault pointing to an object that does not exist. The store is accessible, but the object corresponding to the fault cannot be found. Available in Mac OS X v10.4 and later. Declared in CoreDataErrors.h.

+0

Cảm ơn bạn đã trả lời nhanh. Hmm ... Trong một chủ đề khác, tôi có thể lưu dữ liệu mà không có bất kỳ lỗi nào. Làm thế nào tôi có thể hợp nhất chúng vào bối cảnh trong chủ đề chính mà không có lỗi # 133000? – Emmettoc

0

Trước tiên, bạn cần phải cuộn lỗi của bạn. Thay đổi đầu ra thành:

NSLog(@"Error: %@\n%@", [error localizedDescription], [error userInfo]); 

Điều đó sẽ cung cấp cho bạn nhiều thông tin hơn.

Thứ hai, nếu bạn đang làm việc với một ngữ cảnh duy nhất trong nhiều chuỗi bạn đang làm sai. Bạn cần xem lại tài liệu về Dữ liệu lõi và luồng. Nguyên tắc cơ bản là: Một bối cảnh cho mỗi chủ đề; Giai đoạn. Nếu bạn cần quản lý dữ liệu trên nhiều luồng, hãy xem xét lưu các thông báo từ các chủ đề nền trên chuỗi chính. Tôi khuyên bạn nên xem lại các bài viết của tôi trên Mạng nhà phát triển Mac để biết các ví dụ về điều này.

+0

Cảm ơn bạn. Tôi sẽ kiểm tra lỗi chi tiết. Có, tôi đã tạo ngữ cảnh cho từng chuỗi. – Emmettoc

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