2010-11-02 16 views
19

Tôi muốn tuần tự hóa một loạt dữ liệu và lưu nó vào một tệp, sau đó có thể tải nó (tự nhiên) và phát lại nó với một tính năng tôi đã viết. (Xin lỗi nếu thuật ngữ của tôi là tắt, tôi là một người mới với loại điều này.) Cách tốt nhất để làm điều này với iOS là gì? Từ nhìn vào tài liệu ở đây:Các tùy chọn để lưu dữ liệu trong iOS là gì?

Standard Application Behaviors Guide

tôi đã thu thập được rằng tôi nên sử dụng NSSearchPathForDirectoriesInDomains cho việc tìm kiếm các thư mục gốc lưu trữ thích hợp (Documents?) Và sau đó sử dụng NSData để lưu trữ những bộ đệm dữ liệu để tạo và viết chúng nộp. Tôi có phát hiện ra điều đó hay tôi hiểu sai? Bất kỳ lời khuyên hiền nhân nào khác?

+4

chấp nhận câu trả lời? – golddove

Trả lời

1

Có, hướng khá đúng. Bạn cần triển khai một cái gì đó, được gọi là giao thức NSCoding trên đối tượng của bạn để có thể lưu trữ & hủy lưu trữ nó vào NSData. Xem ví dụ: Saving files on iOS using NSFileManager

18

Bạn có thể sử dụng plist.
Việc lưu danh sách chuỗi hoặc dữ liệu khác rất dễ dàng mà không cần sử dụng dữ liệu lõi.
Xem Property List Programming Guide

Ví dụ, đoạn mã này sẽ tiết kiệm được một đối tượng (rootObj) có thể là một mảng hoặc một cuốn từ điển:

NSString *error; 
NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
NSString *plistPath = [rootPath stringByAppendingPathComponent:@"yourFile.plist"]; 
NSData *plistData = [NSPropertyListSerialization dataFromPropertyList:rootObj 
                   format:NSPropertyListXMLFormat_v1_0 
                errorDescription:&error]; 
if(plistData) { 
    [plistData writeToFile:plistPath atomically:YES]; 
} 
else { 
    NSLog(@"Error : %@",error); 
    [error release]; 
} 

Có một số giới hạn về lớp hỗ trợ (xem hướng dẫn)

+4

dataFromPropertyList không được chấp nhận. – Jackson

+0

Lỗi: ARC cấm gửi tin nhắn rõ ràng về 'phát hành' – Kamal

13

Tùy thuộc vào dữ liệu bạn đang viết. Nếu bạn chủ yếu muốn sắp xếp các đối tượng, hãy xem giao thức NSCoding. Nếu bạn có một số cấu trúc dữ liệu đơn giản không phải là một lớp học, bạn có thể lưu trữ nó vào một số NSDictionary và lưu nó thành một plist. Và nếu bạn có một đoạn dữ liệu lớn (như hàng nghìn phao hoặc một cái gì đó tương tự), bạn có thể muốn lưu dữ liệu đó bằng cách sử dụng NSData như bạn đã gợi ý. Trong mọi trường hợp, hãy nhớ đọc số Archives and Serializations Programming Guide để bạn không phát minh lại bánh xe.

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