你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS -使用屬性列表序列化簡單對象-指定序列化與反序列化的編碼格式

iOS -使用屬性列表序列化簡單對象-指定序列化與反序列化的編碼格式

編輯: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,sex:girl,imagepath:seal.png",     "name:willing,id:110402,sex:boy,imagepath:willing.png",     "name:lisa,id:110403,sex:girl,imagepath:lisa.png" )  
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved