Tôi đang hiển thị một bảng với một số dữ liệu cho người dùng. Ngay sau khi xem được trình bày, tôi đang thực hiện cuộc gọi web để xem liệu có dữ liệu cập nhật (không đồng bộ) hay không. Khi cuộc gọi dịch vụ trả về, tôi muốn cập nhật dữ liệu cốt lõi của mình và chế độ xem.CoreData: cập nhật trong nền và đọc trong chủ đề chính gây ra khóa chết
Thật không may, tôi thường bị khóa chết vì chế độ xem đọc dữ liệu giống như cuộc gọi dịch vụ viết. Làm sao tôi có thể giải quyết việc này?
Khi tôi tạm dừng mô phỏng càng sớm càng nó bị đóng băng, các chủ đề chờ đợi đang chờ đợi tại các địa điểm sau:
nền (cập nhật) chủ đề: (psynch_cvwait)
[mainContext performSelectorOnMainThread:@selector(mergeChangesFromContextDidSaveNotification:)
withObject:notification
waitUntilDone:YES];
chủ đề chính: (psynch_mutexwait) thực hiện một filteredArrayUsingPredicate
Cảm ơn rất nhiều!
Cảm giác với tôi, từ văn bản giới thiệu, rằng bạn đang phá vỡ mô hình MVC. Chỉ nên có một đối tượng kiểm soát dữ liệu và tìm nạp dữ liệu đó. Quan điểm nên nói chuyện với người điều khiển nói chuyện với người mẫu. Không có bế tắc nếu chỉ có một đối tượng gọi các cuộc gọi không đồng bộ. Đó chỉ là linh cảm thôi. – simonpie
Tôi không hiểu ... Tôi chỉ có một ViewController; khung nhìn yêu cầu bộ điều khiển này cho dữ liệu (thực hiện một 'filterArrayUsingPredicate'). Cùng ViewController bắt đầu một cuộc gọi dịch vụ web không đồng bộ (viewWillAppear), sau khi trả về, ghi dữ liệu vào cơ sở dữ liệu. Vì vậy, tôi chỉ có một đối tượng thực hiện các cuộc gọi async, nhưng tôi vẫn nhận được một bế tắc. – swalkner
Bạn đã bao giờ tìm ra giải pháp thực tế cho vấn đề của mình chưa? Tôi đã có một tình huống tương tự (cuối cùng!) Bị mắc kẹt trong trình gỡ lỗi, nhưng tôi không chắc chắn nơi để đi từ đây ... – elsurudo