Tôi đã cố gắng giải quyết một bí ẩn trong vài ngày qua về lý do tại sao NSFetchedResultsController của tôi với kích thước lô 20 sẽ luôn luôn bị lỗi (tức là, tải vào bộ nhớ) tất cả các đối tượng của tôi ngay lập tức khi quá trình tìm nạp hoàn tất, khiến yêu cầu mất ~ 20 giây.Chiều cao UITableView động với các đối tượng dữ liệu lõi
Nó chỉ ra rằng vì trong heightForRowAtIndexPath của tôi, chiều cao được dựa trên độ dài của thuộc tính NSString của từng đối tượng được tìm nạp, và sau đó tải lại bảng, nếu bảng có 2000 hàng, thì chiều cao được tính toán cho mỗi hàng trong đầu, và kể từ khi tôi truy cập một tài sản văn bản của đối tượng, nó sẽ lỗi trong năm 2000 đối tượng (trong 20 kích thước lô) ngay trong đầu, gây ra nó để có mãi mãi. (Tôi không biết chiều cao hàng được tính toán ngay từ đầu). Vì vậy, câu hỏi đặt ra là, nếu tôi có bộ điều khiển kết quả tìm nạp có kích thước lô là 20, nhưng chiều cao hàng của tôi dựa trên thuộc tính văn bản của đối tượng, nếu tôi cố truy cập sẽ khiến đối tượng không bị một lỗi nữa nhưng thực sự được nạp vào bộ nhớ, điều gì sẽ là một giải pháp để tính toán chiều cao?
Tùy chọn của tôi là gì?
Điều gì sẽ xảy ra nếu bạn kiểm tra xem đối tượng có phải là lỗi hay không, nếu có, trả về kích thước tùy ý, nếu không hãy lấy chuỗi và tính toán? Liệu các phương pháp được gọi lại khi tế bào đi vào để xem? Tôi chỉ đoán ở đây. Điều đó hoặc thực hiện một tải lười biếng (I.e hàng mới được thêm vào khi bạn cuộn) dường như là lựa chọn duy nhất của bạn. – jrturton
Không có heightForRow chỉ được gọi khi bắt đầu tải lại và không được gọi mỗi lần một ô xuất hiện (như cellForRow). Đó là những gì tôi đã suy nghĩ quá, nhưng tôi không nghĩ rằng nó sẽ làm việc .. – Snowman
Nghĩ rằng nó nghe quá dễ dàng. – jrturton