2011-10-28 38 views
21

Tôi biết rằng việc lưu trữ UIImage trong dữ liệu cốt lõi đã được thảo luận rất nhiều, chẳng hạn như here, nhưng đó là trước ios5. Bây giờ chúng ta có cờ lưu trữ ngoài, các bạn có nghĩ rằng sẽ là một ý tưởng tốt để lưu trữ trực tiếp UIImage trong thực thể, như một thực thể riêng biệt, hoặc vẫn còn trên đĩa?Lưu trữ UIImage trong Dữ liệu chính với cờ Bộ nhớ ngoài mới

Here là nguồn giải thích tùy chọn bộ nhớ ngoài.

Trả lời

32

Core Data Release Notes for iOS 5.0

Khi được kích hoạt, Core Data heuristically quyết định trên cơ sở cho mỗi giá trị nếu cần lưu dữ liệu trực tiếp vào cơ sở dữ liệu hoặc lưu trữ một URI để một tập tin riêng biệt mà nó quản lý cho bạn. Bạn không thể truy vấn dựa trên nội dung của thuộc tính dữ liệu nhị phân nếu bạn sử dụng tùy chọn này.

Và từ liên kết của bạn External Binary Data, heuristic có vẻ là

Đối tượng nhỏ hơn 1MB được lưu trữ trong cơ sở dữ liệu. Đối với các đối tượng lớn hơn, một tệp bên ngoài được tạo và cơ sở dữ liệu chỉ lưu trữ một tham chiếu đến đối tượng đó.

Vì vậy, những lời khuyên sau đây vẫn còn hợp lệ: CoreData : store images to DB or not?

  • < cửa hàng 100kb trong bảng tương tự như các dữ liệu liên quan
  • < cửa hàng 1mb trong một bảng riêng biệt gắn liền thông qua một mối quan hệ để tránh tải không cần thiết
  • Lưu trữ 1mb trên đĩa và tham chiếu nó bên trong của Dữ liệu chính

Cờ bộ Core Data làm theo lời khuyên đó và tự động lưu trữ hình ảnh> 1MB như một tập tin đĩa riêng biệt.

+1

Vì vậy, trong trường hợp đó, chúng tôi có lẽ nên đặt nó trong một thực thể riêng biệt trong trường hợp nó nằm trong phạm vi 100kb-1mb kể từ khi bộ nhớ ngoài không tính đến trường hợp đó? –

+1

Lưu ý: có lỗi với bộ nhớ hình ảnh bên ngoài khiến lỗi này bị lỗi khi bị xóa, đôi khi: http://stackoverflow.com/questions/7930427/error-uiimage-deleteexternalreferencefrompermanentlocation-unrecognized-se –

+3

Có lỗi khác với bộ nhớ ngoài và di chuyển. Nếu bạn cố gắng tạo một mô hình mới và sau đó sử dụng di chuyển nhẹ sau đó bạn sẽ mất tất cả 'Dữ liệu nhị phân' được lưu trữ trên một tệp bên ngoài. – zirinisp

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