標籤:oc 歸納 讓對象遵守nscoding協議 將對象存入數組 再通過解碼輸出
Person.m
#import "Person.h"
@implementation Person
// 編碼
- (id)initWithCoder:(NSCoder *)aDecoder{
self = [superinit];
if (self) {
self.name = [[aDecoderdecodeObjectForKey:@"name"]copy];// copy不變
self.age = [aDecoderdecodeIntForKey:@"age"];
}
returnself;
}
// 解碼
- (void)encodeWithCoder:(NSCoder *)aCoder{
[aCoderencodeObject:self.nameforKey:@"name"];
[aCoderencodeInt:self.ageforKey:@"age"];
}
@end
main.m
#import <Foundation/Foundation.h>
int main(int argc,const char * argv[]) {
@autoreleasepool {
NSString * path = [NSHomeDirectory()stringByAppendingPathComponent:@"desktop/jereh.txt"];
NSFileManager * manager = [NSFileManagerdefaultManager];
if (![manager fileExistsAtPath:path]) {
[manager createFileAtPath:path contents:nilattributes:nil];
NSFileHandle * fileHandle = [NSFileHandlefileHandleForWritingAtPath:path];
// NSString * str = @"dsafas";
// NSData * data = [str dataUsingEncoding:NSUTF8StringEncoding];
[fileHandleseekToEndOfFile];
// [fileHandle writeData:data];
// 1.將數組寫入檔案
NSArray * array = @[@"jack",@"jim"];
// [array componentsJoinedByString:@"-"];
// 自訂歸納
NSData * data2 = [NSKeyedArchiverarchivedDataWithRootObject:array];
[fileHandlewriteData:data2];
[fileHandlecloseFile];
}else{
// 2.從數組中讀出來
NSFileHandle * readHandle = [NSFileHandlefileHandleForReadingAtPath:path];
NSData * data = [readHandle availableData];
NSArray * array = [NSKeyedUnarchiverunarchiveObjectWithData:data];
for (NSString * tepin array) {
NSLog(@"%@",tep);
}
[readHandlecloseFile];
}
// 歸納
}
return 0;
}
oc - NSFileHandle歸納,讓對象遵守NSCoding協議,將對象存入數組,再通過解碼輸出