2012-07-12 31 views
8

Tôi đang làm việc trên một ứng dụng mà người dùng có thể vẽ trên màn hình bằng ngón tay của họ. Tôi đang sử dụng UIBezierPath cho việc này. Tôi cần phải lưu giữ dữ liệu này là một NSArray chứa nhiều đối tượng BezierPath. cách tốt nhất để làm việc này là gì? Lưu trữ trong coredata, lưu trữ trong một tập tin bằng cách sử dụng NSData? Nhiều nghĩa vụ.UIBezierPath kiên trì với dữ liệu lõi

Trả lời

12

Bạn có dự định sẽ lưu trữ nhiều đối tượng không? Bạn sẽ cần để có thể lấy chúng dựa trên một số bộ lọc hoặc đặt hàng? Tôi khuyên bạn nên sử dụng Dữ liệu cốt lõi để tiết kiệm cho mình một lượng khá lớn công việc trong việc đóng gói/giải nén dữ liệu. Không có lý do gì để lưu trữ nó trong một tập tin.

chỉnh sửa:

Như câu trả lời khác nói, bạn chỉ cần lưu trữ nó để NSData. Lớp UIBezierPath tuân thủ các giao thức NSCoding để bạn có thể làm điều gì đó như thế này để lưu trữ nó:

NSData *bezierData = [NSKeyedArchiver archivedDataWithRootObject:bezierPath]; 

Bạn có thể tồn tại mà đối tượng NSData trong Core Data.

Để giải mã các kho lưu trữ, giả sử chúng ta có một đối tượng bezierData NSData, bạn có thể làm điều gì đó như:

UIBezierPath *bezierPath = [NSKeyedUnarchiver unarchiveObjectWithData:bezierData]; 
+0

Bạn sẽ duy trì UIBesierPath trong coredata như thế nào? –

+0

cập nhật câu trả lời của tôi. – Dima

1

Lưu trữ các UIBezierPath để NSData, và lưu nó như một thuộc tính của loại NSData trong CoreData. Bạn có thể có API dễ dàng hơn nếu bạn biến nó thành thuộc tính có thể biến đổi.

Thật dễ dàng để làm, đặc biệt là đối với các lớp học đã hỗ trợ lưu trữ.

Xem tài liệu này để biết thêm thông tin.

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdNSAttributes.html

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