2009-04-15 27 views
5

Câu hỏi mới bắt đầu thực sự. Tôi có một lớp con NSView, trong đó tôi tạo một NSMutableArray chứa NSValues. Khi tôi muốn viết mảng vào một tệp bằng cách sử dụng writetofile: atomatically: tệp được tạo nhưng nó không chứa bất kỳ NSValues ​​nào mà mảng có thể thay đổi được chứa. Có ai biết làm thế nào tôi thành công có thể viết mảng có thể thay đổi này vào một tập tin?sự cố khi viết NSMutableArray để ghi vào ca cao

Cảm ơn

Trả lời

15

NSValues ​​không thể được lưu trong một plist (đó là những gì writeToFile: nguyên tử: không). Hãy xem here để biết các giá trị bạn có thể lưu. (NSNumber là một loại NSValue bạn có thể tiết kiệm, nhưng các NSValue khác sẽ thất bại.)

Nếu bạn muốn lưu mảng với NSValues, bạn có thể sử dụng archiving thay vì writeToFile: atomically :. NSArray và NSValue đều hỗ trợ lưu trữ, vì vậy bạn chỉ cần chuyển đổi mảng thành một tệp lưu trữ và lưu dữ liệu đó vào một tệp. (Nó sẽ bao gồm các NSValues ​​là tốt.) Mã này trông giống như sau:

[NSKeyedArchiver archiveRootObject:myArray toFile:@"myPath"]; 

Để tải nó, chỉ cần sử dụng:

NSArray *myArray = [NSKeyedUnarchiver unarchiveObjectWithFile:@"myPath"]; 
+0

tôi đã sử dụng NSArchiver và NSUnarchiver thay vào đó và nó hoạt động hoàn hảo. Cảm ơn –

+3

Bạn được chào đón. Lưu ý rằng NSKeyed [Un] Archiver được ưu tiên hơn NS [Un] Archiver ngày nay. –

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