iOS 학습 데이터 분석

13788 단어 ios
해석: 약 정 된 형식 으로 데 이 터 를 추출 하 는 과정 을 해석 이 라 고 합 니 다.
백 스테이지 개발 자 는 약 정 된 형식 에 따라 데 이 터 를 저장 하고 전단 개발 자 는 약 정 된 형식 에 따라 데 이 터 를 읽 습 니 다.
주류 형식: XML / JSON 전단 과 백 엔 드 가 모두 식별 할 수 있 는 형식; 
XML 해석
XML 해석 의 두 가지 작업 원리:
1. SAX 분석: 이벤트 리 셋 의 분석 체 제 를 바탕 으로 한 줄 씩 분석 하고 효율 이 낮 으 며 빅 데이터 분석 에 적합 합 니 다. 시스템 에서 제공 하 는 NSXMLparser.
1.                      NSData  .
2.      
NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithData:data];
3.    
xmlParser.delegate = self;
4.    
[xmlParser parse];
[xmlParser release];


#pragma mark - delegate

//             
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
    NSLog(@"     %@", string);
    //   str          ;
    _str = string;
}
//           
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
    NSLog(@"    ");
    if ([elementName isEqualToString:@"Student"]) {
        //         ,  Student  .
        self.stu = [[[StudentModel alloc] init] autorelease];
        //attributeDict         
        self.stu.position = attributeDict[@"position"];
    }
    
}
//           </Student>
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
    NSLog(@"    ");
    if ([elementName isEqualToString:@"name"]) {
        self.stu.name = self.str;
    } else if ([elementName isEqualToString:@"gender"]) {
        self.stu.gender = self.str;
    } else if ([elementName isEqualToString:@"age"]) {
        self.stu.age = self.str;
    } else if ([elementName isEqualToString:@"motto"]) {
        self.stu.motto = self.str;
    } else if ([elementName isEqualToString:@"Student"]) {
        //   Student     , Student        
        [self.dataSource addObject:_stu];
    }
}

//        
- (void)parserDidEndDocument:(NSXMLParser *)parser {
    NSLog(@"    ");
    //      , tableView        
    [self.tableView reloadData];
}

 
2. DOM 분석: 분석 데 이 터 를 메모리 에 읽 고 트 리 구 조 를 초기 화하 여 층 층 이 분석 합 니 다. 효율 이 높 고 작은 데이터 분석 에 적합 합 니 다. 구 글 이 제공 하 는 GDataXML Node. 
 
분석 도구:
GDataXMLNode  Google 에서 제공 하 는 C 언어 기반 libxml2. dylib 동적 링크 라 이브 러 리 로 포 장 된 OC 의 XML 해석 클래스 로 효율 이 높 습 니 다. DOM 해석 원 리 를 사용 합 니 다.
GDataXML Nod 단계 사용:
1. target - 빌 드 단계 - 링크 바 이 너 리 libxml2. dylib 추가
2. target - 빌 드 설정 - 검색 헤더 검색 경로 추가 / usr / include / libxml 2
 
libxml 2. dylib 와 libxml 2. dylib 의 차이 점:
전 자 는 빠 른 방식 으로 최신 라 이브 러 리 를 영원히 가리 키 고 후 자 는 진실 한 라 이브 러 리 입 니 다. 전 자 를 사용 하면 좋 은 점 이 있 습 니 다. 라 이브 러 리 가 업 데 이 트 될 때 우리 의 오래된 버 전의 프로젝트 는 새로운 라 이브 러 리 를 다시 가 져 올 필요 가 없습니다. 
 
JSON 해석:
JSonKit 는 NSString, NSData 에 분 류 를 추가 하 는 형식 으로 해석 기능 을 추가 합 니 다.
 
//       JSON  
- (void)handleSystemParser:(UIBarButtonItem *)item {
    //1.      
    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Student" ofType:@"json"];
    //2.         NSData  
    NSData *data = [NSData dataWithContentsOfFile:filePath];
    //  
    NSArray *arr = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
    NSLog(@"%@", arr);

}

//
JSON ( JSONKit) - (void)handleThirdPartParser:(UIBarButtonItem *)item { // Json OC (NSString )

//1. NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Student" ofType:@"json"]; //2. NSString *dataStr = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil]; //3. OC .( / ) NSArray *arr1 = [dataStr objectFromJSONString]; NSArray *arr2 = [dataStr mutableObjectFromJSONString]; NSLog(@"%@",arr1); NSLog(@"%@", arr2);

  }

 
 
선택
물론 NSData 대상 으로 도 해석 할 수 있 습 니 다. 첫 번 째 방법 은 똑 같 습 니 다. 파일 경 로 를 가 져 옵 니 다.
- (void)handleThirdPartParser:(UIBarButtonItem *)item {
    
    // Json       OC  (NSData  )

    //1.      
    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Student" ofType:@"json"];

     //          NSData  
     NSData *data = [NSData dataWithContentsOfFile:filePath];
     //  .(  /   )
     NSArray *arr1 = [data objectFromJSONData];
     NSMutableData *arr2 = [data mutableObjectFromJSONData];

 
이상 은 JSON 데 이 터 를 OC 로 전환 하 는 대상 이 고, 다음은 OC 대상 을 JSON 데이터 로 전환 하 는 방법 입 니 다.
    // OC    JSON    .

    //1. OC       JSON    .
    NSArray *arr1 = @[@"aa",@"bb",@"cc",@"dd"];
    NSData *jsonData1 = [arr1 JSONData];//  JSON  Data
    NSString *jsonStr1 = [arr1 JSONString]; //  JSON  String
    
    //2. OC       JSON    .
    NSDictionary *dic2 = @{@"name":@"Frank",
                           @"age":@"18"
                           };
    NSData *jsonData2 = [dic2 JSONData];//  JSON  Data
    NSString *jsonStr2 = [dic2 JSONString];//  JSON  String

 
 
 

좋은 웹페이지 즐겨찾기