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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Swift의 패스트 패스Objective-C를 대체하기 위해 만들어졌지만 Xcode는 Objective-C 런타임 라이브러리를 사용하기 때문에 Swift와 함께 C, C++ 및 Objective-C를 컴파일할 수 있습니다. Xcode는 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.