当前位置:编程学习 > wap >>

iOS -使用属性列表序列化简单对象-指定序列化与反序列化的编码格式

使用属性列表序列化简单对象-创建plist表,向plist表添加数据
 
 指定序列化格式化的编码格式(指定一种编码方式,比如xml编码,二进制编码。这样子:(1)把属性列表对象编码为某种格式的nsdata对象(2)将nsdata对象写入文件或是url。反序列化(加载属性列表)的时候,先读取文件或url到nsdata对象,然后在将其解码为原始的属性列表对象)
 
指定一种编码,把数据写入plist表
 
   if ([fileManager fileExistsAtPath:studentFilePath isDirectory:&isDirectory] && !isDirectory) {  
          
        NSLog(@"存在 student.plist !!");  
     }else{  
          
        NSLog(@"不存在 student.plist");  
          
        NSArray *studentArray = [self createStudentArray];//创建student对象  
        if ([studentArray writeToFile:studentFilePath atomically:YES]) {  
            NSLog(@"将student数组保存为属性列表文件成功!!");  
        }else{  
            NSLog(@"将student数组保存为属性列表文件不成功");  
        }  
          
//        使用kvc构建字段数组  
        NSArray *studentIDArray = [studentArray valueForKey:@"studentID"];  
        NSArray *studentNameArray = [studentArray valueForKey:@"studentName"];  
        NSArray *studentSexArray = [studentArray valueForKey:@"studentSex"];  
        NSArray *studentImagePathArray = [studentArray valueForKey:@"studentImagePath"];  
        NSArray *studentList = @[studentNameArray,studentIDArray,studentSexArray,studentImagePathArray];  
      
//        指定序列化格式化的编码格式(指定一种编码方式,比如xml编码,二进制编码。这样子:(1)把属性列表对象编码为某种格式的nsdata对象(2)将nsdata对象写入文件或是url。反序列化(加载属性列表)的时候,先读取文件或url到nsdata对象,然后在将其解码为原始的属性列表对象)  
          
          
        NSError *error = nil;  
        //将属性列表对象按照指定编码方式转换为NSData对象  
        NSData *studentInfoData = [NSPropertyListSerialization dataWithPropertyList:studentList format:NSPropertyListBinaryFormat_v1_0 options:0 error:&error];  
        //调用NSPropertyListSerialization类的dataWithPropertyList: format:format options:error:方法将属性列表对象编码为指定格式的nsdata对象。NSPropertyListXMLFormat_v1_0是xml编码/NSPropertyListBinaryFormat_v1_0二进制编码。  
        if (studentInfoData) {  
//         转换成功  
            NSLog(@"studentInfoData:\n%s\n",[[studentInfoData description] UTF8String]);  
              
            //将NSData写入文件  
            if ([studentInfoData writeToFile:studentFilePath atomically:YES]) {  
                NSLog(@"将student数组保存为属性列表文件成功!");  
            }else{  
                NSLog(@"将student数组保存为属性列表文件不成功");  
            }  
              
  
        }else{  
            NSLog(@"将属性列表对象按照指定编码方式转换为NSData对象失败:\n%s\n",[[error description]UTF8String]);  
        }  
  
    }  

 

      
 
 
 
---------------------
 
反序列化的编码格式:从plist表中读取student对象
 
 
 
 
if ([fileManager fileExistsAtPath:studentFilePath isDirectory:&isDirectory] && !isDirectory) {  
         
       NSLog(@"存在 student.plist !!");  
         
        //加载属性列表文件到NSData对象  
       NSData *studentListData = [NSData dataWithContentsOfFile:studentFilePath];  
         
       if (studentListData) {  
             
           //加载为NSData对象成功  
           NSError *error = nil;  
            //将NSData对象解码为原始属性列表对象  
           NSArray *studentList = [NSPropertyListSerialization propertyListWithData:studentListData options:0 format:NULL error:&error];  
             
           if (studentList) {  
                 
                //将NSData对象解码为原始属性列表对象成功  
               NSArray *studentName = [studentList objectAtIndex:0];  
               NSArray *studentID = [studentList objectAtIndex:1];  
               NSArray *studentSex = [studentList objectAtIndex:2];  
               NSArray *studentImagePath = [studentList objectAtIndex:3];  
                 
               NSMutableArray *studentArray = [[NSMutableArray alloc]init];  
               for (int i = 0; i < [studentName count]; i++) {  
                   Students *student = [[Students alloc]initWithName:[studentName objectAtIndex:i] ID:[[studentID objectAtIndex:i] intValue] Sex:[studentSex objectAtIndex:i] Photo:[studentImagePath objectAtIndex:i]];  
                   [studentArray addObject:student];  
               }  
                 
               NSLog(@"students:\n%s\n",[[studentArray description]UTF8String]);  
           }else {  
               //解码为原始属性列表对象失败  
               NSLog(@"解码为原始属性列表对象失败:%s",[[error description] UTF8String]);  
             
           }  
           
       }else{  

 

         
 
打印:
 
2013-10-28 16:48:24.240 StudentPlist[2387:70b] students:
(
    "name:seal,id:110401,易做图:girl,imagepath:seal.png",
    "name:willing,id:110402,易做图:boy,imagepath:willing.png",
    "name:lisa,id:110403,易做图:girl,imagepath:lisa.png"
)
 
补充:移动开发 , IOS ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,