Tôi đang phát triển một ứng dụng iPhone có Dữ liệu lõi. Tất cả dữ liệu người dùng phải được đồng bộ hóa với các máy chủ của chúng tôi. Với mục đích này, tôi đã tạo một lớp con của phù thủy NSOperation tải dữ liệu mới từ dịch vụ web của chúng tôi và tạo ra các đối tượng được quản lý tương ứng. Để duy trì mối quan hệ giữa chúng, mọi đối tượng được truyền đi với một remoteID (là khóa chính của DB máy chủ quan hệ).Dữ liệu cốt lõi executeFetchRequest ném NSGenericException (Bộ sưu tập đã bị đột biến khi được liệt kê)
Giả sử có hai đối tượng được quản lý: Bộ < - >> Nhân viên. Đồng bộ hóa hoạt động như sau:
Tải tất cả các phòng ban từ máy chủ. Đối với mỗi bộ phận: tạo một đối tượng Department và thiết lập remoteID của nó.
Tải tất cả nhân viên từ máy chủ. Đối với mỗi nhân viên: tạo đối tượng Employee, tìm nạp bộ phận liên quan (bằng remoteID) và gán nó cho nhân viên.
Tìm nạp bộ phận dẫn đến ngoại lệ sau đây:
*** Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <__NSCFSet: 0x69c8a10> was mutated while being enumerated.<CFBasicHash 0x69c8a10 [0x2d6d380]>{type = mutable set, count = 1424,
entries => <A list of all newly created entities>
*** Call stack at first throw:
0 CoreFoundation 0x02d04919 __exceptionPreprocess + 185
1 libobjc.A.dylib 0x02e525de objc_exception_throw + 47
2 CoreFoundation 0x02d043d9 __NSFastEnumerationMutationHandler + 377
3 CoreData 0x026225d0 -[NSManagedObjectContext executeFetchRequest:error:] + 4400
4 myApp 0x00059de4 +[AppFactory departmentWithRemoteID:inManagedObjectContext:] + 259
Trường hợp ngoại lệ không được ném mỗi lần. Di chuyển mã vào chuỗi chính sẽ giải quyết được sự cố. Tôi không biết có gì sai. Tôi đã tạo một NSManagedObjectContaxt mới trong luồng đồng bộ hóa và truyền tất cả các đối tượng được quản lý bởi NSManagedObjectID của nó.
Mọi suy nghĩ?
với tôi điều này có thể là lý do cho loại vấn đề này. Cách tốt nhất để giải quyết những vấn đề như vậy, bạn có bất kỳ ý tưởng @octy? –
Cảm ơn, một câu trả lời hay cho câu hỏi của bạn đã được cung cấp trong một cuộc thảo luận được liên kết: http://stackoverflow.com/questions/3364769/iphone-nsfetchedresultscontroller-with-delegate-and-data-update-from-a-separate – octy