2010-03-15 25 views
7

Khi tôi sử dụng NSKeyedArchiver là dữ liệu được viết * .plist, tôi đã thấy một số ví dụ trong đó mọi người có tệp xuất dưới dạng * .txt hoặc thậm chí không có phần mở rộng?NSKeyedArchiver lưu định dạng nào?

-(void)saveCore { 
    NSMutableData *data = [[NSMutableData alloc] init]; 
    NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data]; 
    [archiver encodeObject:reactorCore forKey:@"CORE"]; 
    [archiver finishEncoding]; 
    [data writeToFile:[self dataFilePath] atomically:YES]; 

    [data release]; 
    [archiver release]; 
} 

gary

+0

@JasonCoco Không đúng sự thật. Xem câu trả lời của Ole Begemann. –

+0

@ JonaChristopherSahnwaldt Đúng vậy. Dữ liệu được tạo ra là dữ liệu plist nhị phân và cách dữ liệu được cấu trúc hoàn toàn độc quyền. Có, bạn có thể chuyển đổi dữ liệu plist nhị phân này thành một thứ khác, như một plist xml, nhưng nó không làm cách thức plist được tổ chức với bất kỳ quyền sở hữu nào ít hơn, cũng không có nghĩa là bạn có thể giả định bất kỳ biểu mẫu nào. Nó có thể dễ dàng thay đổi giữa các phiên bản nếu họ muốn nó và có trong quá khứ. –

+0

@JasonCoco Tôi không hiểu ý của bạn là 'nhị phân plist'. Tôi nghĩ bạn có nghĩa là một định dạng tập tin nhị phân, và XML không phải là một định dạng nhị phân. Và theo như tôi biết, định dạng XML plist đã không được thay đổi kể từ khi thụ thai. –

Trả lời

14

Bạn có thể sử dụng bất kỳ phần mở rộng tập tin mà bạn muốn. Nó hoàn toàn không liên quan đến định dạng tệp thực tế mà NSKeyedArchiver sử dụng. Theo mặc định, tệp lưu trữ sẽ ở dạng nhị phân, nhưng nếu bạn đặt thuộc tính outputFormat của trình lưu trữ thành NSPropertyListXMLFormat_v1_0, nó sẽ viết một đoạn mã XML. Và khi bạn làm điều đó, bạn có lẽ nên cung cấp cho tệp của bạn một phần mở rộng .plist hoặc .xml.

+0

Cảm ơn bạn Ole, nhiều đánh giá cao. – fuzzygoat

+1

Điều này đúng 100%. Lưu ý rằng nếu bạn mở một tệp nhị phân plist trong TextMate, nó sẽ tự động chuyển đổi thành ASCII (với "!!! DANH SÁCH TÀI SẢN SỞ HỮU TÀI LIỆU" ở trên cùng) .... có thể gây nhầm lẫn cho một. –

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