多個對象的保存與讀取

-(NSString *)personFileName

{

    if(!_personFileName)_personFileName = @"person.dat";

    return _personFileName;

}

-(NSString *)filePath

{

    if(!_filePath)_filePath = [[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]stringByAppendingPathComponent:self.personFileName];

    return _filePath;

}


- (IBAction)saveObjects

{

    NSLog(@"%@", self.filePath);

    

    TRPerson *p1 = [[TRPerson alloc]init];

    p1.name = @"Daniel";

    p1.age = 30;

    p1.male = YES;

    TRPerson *p2 = [[TRPerson alloc]init];

    p2.name = @"Shasha";

    p2.age = 19;

    p2.male = NO;

    TRPerson *p3 = [[TRPerson alloc]init];

    p3.name = @"Shanshan";

    p3.age = 20;

    p3.male = NO;

    NSArray *persons = @[p1, p2, p3];

    NSMutableString *result = [[NSMutableString alloc]init];

    for(int i=0; i<persons.count; i++){

        TRPerson *person = persons[i];

        NSString *personString = [NSString stringWithFormat:@"%@|%lu|%@\n", person.name, (unsigned long)person.age, person.male?@"male":@"female"];

        [result appendString:personString];

    }

    [result writeToFile:self.filePath atomically:YES encoding:NSUTF8StringEncoding error:nil];

}


- (IBAction)readObjects

{

    NSString *contents = [NSString stringWithContentsOfFile:self.filePath encoding:NSUTF8StringEncoding error:nil];

    NSArray *lines = [contents componentsSeparatedByString:@"\n"];

    NSMutableArray *persons = [[NSMutableArray alloc]init];

    for (NSString *line in lines)

    {

        if(line.length>0)

        {

            NSArray *items = [line componentsSeparatedByString:@"|"];

            TRPerson *person = [[TRPerson alloc]init];

            person.name = items[0];

            person.age = [items[1]intValue];

            person.male = [items[2] isEqualToString:@"male"];

            [persons addObject:person];

        }

    }

    for (TRPerson *person in persons)

    {

        NSLog(@"%@", person);

    }

}


發佈了51 篇原創文章 · 獲贊 0 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章