Laboratorium 12. XML i Sieć w IOS Wymagana wiedza

Transkrypt

Laboratorium 12. XML i Sieć w IOS Wymagana wiedza
Laboratorium 12.
XML i Sieć w IOS
Wymagana wiedza wstępna:
1) Student musi
1) Umieć stworzyć projekt aplikacji konsolowej w XCode z wykorzystaniem
Objective-C
2) Umieć skompilować i uruchomić program w XCode
3) Skorzystać z podstawowych klas i funkcji Objective-C
4) Nauczyć się zasad wywoływania metod w Objective-C
5) Znać pojecie wskaźnika
6) Umieć tworzyć hierarchę klas w Objective-C
7) Umieć wykorzystywać późne wywołanie metod w Objective-C
8) Umieć korzystać z kolekcji
9) Umieć tworzyć własne inicjalizatory
10) Tworzyć referencje do obiektów znajdujących się na widoku
11) Obsługiwać domyślne interakcje z obiektami za pomocą własnych
metod
12) Znać zasady korzystania z @property i @synthesize
13) Rozumieć ideę MVC - model - view - controller
14) Rozumieć ideę delegata dla widoku (kontrolera)
15) Umieć korzystać z dodatkowych Frameworków
2) Student powinien
1) Znać jezyk Java lub C# lub C++
Cel dydaktyczny
1) Student musi
1) Znać zasadę działania kontrolek widoku HTML
2) Umieć korzystać z zasobów sieciowych
3) Umieć korzystać z plików XML i parsować je
Zakres Tematyczny wykładu i Laboratorium
Na niniejszych zajęciach zaprezentowane zostaną sposoby korzystania z prostych
połączeń sieciowych w IOS oraz sposób korzystania z plików w formacie XML.
 System ładowania URL
 Zbiór klas i protokołów zapewniających dostęp do danych określanych adresem
URL
 Ładowanie danych,
 Zarządzanie cachem
 Autoryzacja
 Praca z ciasteczkami
 Wsparcie dla prootokołów
 Manipulacja URL i zasobami
 Użycie obiektu NSURL i jego metod
 Użycie klasy NSURLConnection do tworzenia połączenia
 Obsługa blędów połączenia
 Wsparcie dla protokołów (FTP,http,FILE,HTTPS)
Programowanie Urządzeń Mobilnych Apple - materiały do laboratorium - 1/5














NSURLRequest i NSURLResponse
Metadane
Protokół NSURLConnectionDelegate
Informacyjne wywołania zwrotne
Wywołanie odpowiednich metod w momencie pobrania treści
Pobieranie synchroniczne i asynchroniczne
Scenariusze użycia
Typy żądań – GET / POST
Maksymalny czas połączenia - Connection Timeout
Polityka Cache i korzytsanie z Cache
Autoryzacja wywołań
Zarządzanie autoryzacją NSURLCredentialStorage zarządza danymi autoryzacji
Ciasteczka i klasa NSHTTPCookie – obsługa przez NSURLRequest
NSXML Parser i pliki XML
Załączniki
1) Prezentacja_12.pdf – slajdy z prezentacją z wykładu
Zadania na laboratorium
Zadanie 1
Stwórz prostą przeglądarkę internetową, wyświetlającą pole adresu, przycisk „Przejdź”
oraz pole wyświetlające zawartość pobraną z tego adresu po kliknięciu przycisku Przejdź.
Podpowiedzi
1) Aby pobrać zawartość z adresu URL skorzystaj z metody inicjalizującej klasy NSString:
stringWithContentsOfURL
NSString *URLString = [NSString stringWithContentsOfURL:[NSURL URLWithString:URL]];
2) Aby wyświetlić zawartość na ekranie skorzystaj z komponentu UIWebView
Zadanie 2
Napisz program konsolowy parsujący plik XML. Program powinien wypisać informacje o
wszystkich odwiedzonych tagach w postaci hierarchicznej (z wcięciami). Plik XML dołącz
na stałe do zasobów programu.
1) Parsowanie pliku pliku XML można wykonać za pomocą obiektu klasy NSXMLParser
parser = [[NSXMLParser alloc] initWithContentsOfURL:xmlURL];
[parser setDelegate:self];
[parser parse];
2) W delegacie należy zaimplementować metody, które będą uruchamiane w przypadku
napotkania odpowiednich elementów XMLa podczas parsowania.
Programowanie Urządzeń Mobilnych Apple - materiały do laboratorium - 2/5
-
(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
attributes:(NSDictionary *)attributeDict{
3) Przykładowy plik XML, który można przetestować:
<root>
<kierunek typ=”dzienne” nazwa=”informatyka>
<zajecia typ=”laboratorium”>
<nazwa>Objective-C</nazwa>
<dzien>Poniedziałek</dzien>
<godzina>14</godzina>
</zajecia>
<zajecia typ=”wyklad”>
<nazwa>Objective-C</nazwa>
<dzien>Poniedziałek</dzien>
<godzina>12</godzina>
</zajecia>
<zajecia typ=”wyklad”>
<nazwa>Algebra</nazwa>
<dzien>Wtorek</dzien>
<godzina>8</godzina>
</zajecia>
</kierunek>
</root>
4) Wyniki parsowania powyższego pliku:
>root
>>kierunek
>>>zajecia
>>>>nazwa
>>>>dzień
>>>>godzina
>>>zajecia
>>>>nazwa
>>>>dzień
>>>>godzina
>>>zajecia
>>>>nazwa
>>>>dzień
>>>>godzina
Zadanie 3
Napisz program, który pobierze z internetu podany plik RSS i wyświetli jego zawartość w
formie tabeli.
1) Wykonaj parsowanie pliku RSS w podobny sposób jak wyżej. Zareaguj na odpowiednie
tagi i atrybuty. Przechowuj wpisy RSS jako elementy w NSMutableDictionary
- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError
{}
Programowanie Urządzeń Mobilnych Apple - materiały do laboratorium - 3/5
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary
*)attributeDict{
currentElement = [elementName copy];
if ([elementName isEqualToString:@"item"]) {
item = [[NSMutableDictionary alloc] init];
currentTitle = [[NSMutableString alloc] init];
currentDate = [[NSMutableString alloc] init];
currentSummary = [[NSMutableString alloc] init];
currentLink = [[NSMutableString alloc] init];
currentDatew = [[NSMutableString alloc] init];
currentImage= [[NSMutableString alloc] init];
currentFull= [[NSMutableString alloc] init];
}
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString
*)namespaceURI qualifiedName:(NSString *)qName{
if ([elementName isEqualToString:@"item"]) {
[item setObject:currentTitle forKey:@"title"];
[item setObject:currentLink forKey:@"link"];
[item setObject:currentSummary forKey:@"summary"];
[item setObject:currentDate forKey:@"date"];
[item setObject:currentDatew forKey:@"datew"];
[item setObject:currentImage forKey:@"image"];
[item setObject:currentFull forKey:@"full"];
[stories addObject:[item copy]];
}}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
if ([currentElement isEqualToString:@"title"]) {
[currentTitle appendString:string];
} else if ([currentElement isEqualToString:@"link"]) {
[currentLink appendString:string];
} else if ([currentElement isEqualToString:@"full"]) {
[currentFull appendString:string];
} else if ([currentElement isEqualToString:@"description"]) {
[currentSummary appendString:string];
} else if ([currentElement isEqualToString:@"pubDate"]) {
[currentDate appendString:string]; }
else if ([currentElement isEqualToString:@"image"]) {
[currentImage appendString:string]; }
else if ([currentElement isEqualToString:@"wDate"]) {
[currentDatew appendString:string]; }
}
- (void)parserDidEndDocument:(NSXMLParser *)parser {
[activityIndicator stopAnimating];
[activityIndicator removeFromSuperview];
[stories count]);
[newsTable reloadData];
}
Programowanie Urządzeń Mobilnych Apple - materiały do laboratorium - 4/5
Zadania samodzielne
Zadanie 1
Zmodyfikuj program tak, aby był czytnikiem kilku źródeł RSS i wyświetlał ich wpisy
posortowane względem daty.
Programowanie Urządzeń Mobilnych Apple - materiały do laboratorium - 5/5