#import "Fraction.h" #import <stdio.h> @implementation Fraction -(Fraction*) initwithnumerator: (int) n denominator: (int) d { self = [super init]; } if ( self ) { [self setnumerator: n anddenominator: d]; } return self; Przechowywanie danych w IOS -(void) print { printf( "%i/%i", numerator, denominator ); } Wykład 6 -(void) setnumerator: (int) n { numerator = n; } -(void) setdenominator: (int) d { denominator = d; } -(void) setnumerator: (int) n anddenominator: (int) d { numerator = n; denominator = d; Programowanie aplikacji mobilnych na urządzenia Apple (IOS i ObjectiveC)
CoreData 2
Core Data - możliwości Wstecz powtórz Walidacja zapisywanych właściwości Propagacja zmian Grupowanie filtrowanie i organizowanie danych w pamięci Automatyczna współpraca z zewnętrznymi repozytoriami Zapisywanie danych w trybie klucz-wartość 3
Zapytania Możliwość tworzenia złożonych zapytań NSPredicate obiekty ograniczeń zapytań Odpowiednik SQL Obsługa Unicode Tłumaczeń Wyrażeń regularnych 4
Dlaczego używać? Zmniejszenie ilości potrzebnego kodu o 50% do 70% Wielu rzeczy nie trzeba implementować samodzilenie Optymalizacja Testowanie 5
Czym Core Data NIE JEST To nie baza danych To nie jest system RDBMS Nie likwiduje potrzeby programowania 6
Czym Core Data JEST Infrastruktura zarzązania i zapisywania obiektów z repozytorium Repozytorium może być Bazą danych Plikiem? 7
Architektura CoreData 8
Konteksty i obiekty zarządzalne Przy pobieraniu danych z repozytorium Tworzy tymczasową kopię danych w pamięci Tymczasową kopię można kodyfikować Trzeba zapisać zmiany, żeby dane w repozytorium zostały uaktualnione 9
Tworzenie obiektu zarządzalnego Obiekt zarządzalny to instancja klasy Zasadniczo niczym nie różni się od zwykłej klasy Musi być instancją NSManagedObject albo dziedziczyć z NSManagedObject Istnieje w środowisku zdefiniowanym przez kontekst zarządzania CoreData Posiada opis właściwości encji 10
Tworzenie obiektu zarządzalnego Zapisywanie obiektu do kontekstu (insertnewobjectforentityforname:inmanagedo bjectcontext:). 11
NSManagedObject Klasa Objective-C Inicjalizacja tylko za pomocą specjalnego inicjalizatora initwithentity:insertintomanagedobjectcontext: Inicjalizator ustawia encję i kontekst 12
Usuwanie obiektu Na kontekście deleteobject: message, Parametrem jest obiekt, który chcemy usunąć. [acontext deleteobject:amanagedobject]; Zmiana nie zostanie zapisana dopóki nie zostanie zapisany kontekst. 13
NSUserDefaults Prosty sposób na zapamiętanie podstawowych danych Kodowanie klucz- wartość Pozwala na interacje z systemem wartości domyślnych Konfigurowanie preferencji użytkownika Np. jak często mają się odświeżać wyświetlane dane Np. jaki kolor awatara wybrał użytkownik Np. Jakiej czcionki używać do pracy aplikacji. 14
NSUserDefaults Obsługa podstawowych typów Float Double Integer Boolean URL 15
NSUserDefaults Obsługa obiektów NSData tu możemy zapamiętać również bardziej złożone obiekty NSString NSNumber NSDate NSArray NSDictionary. 16
NSUserDefaults Baza danych jest tworzona automatycznie dla każdego użytkownika Nie można zapamiętać ustawień w zakresie urządzenia Użyj CFPreferences API 17
CFPreferences Zarządzanie preferencjami użytkownika i urządzenia / aplikacji W formacie klucz - wartość 18
CFPreferences CFPreferencesCopyAppValue CFPreferencesCopyKeyList CFPreferencesCopyMultiple CFPreferencesCopyValue CFPreferencesGetAppBooleanValue CFPreferencesGetAppIntegerValue CFPreferencesSetAppValue CFPreferencesSetMultiple CFPreferencesSetValue 19
Dane w chmurze icloud 20
icloud Zapisywanie danych w chmurze Odczyt na różnych urządzeniach Łatwa obsługa za pomocą klasy NSDocument Praca z dokumentem na różnych urządzeniach Zaczynasz w jednym miejscu, kończysz w innym 21
Sposoby zapisu danych w icloud Klucz-wartosć - dla prostych danych ustawień, preferencji, stanu aplikacji. Document - dla danych widzialnych w formie dokumentów bezpośrednio dla użytkownika Rysunki dokumenty Core Data dla danych strukturalnych niewidocznych bezpośrednio dla użytkownika 22
Klucz - wartość NSUbiquitousKeyValueStore 23
NSUbiquitousKeyValueStore Pobieranie danych arrayforkey: boolforkey: dataforkey: dictionaryforkey: doubleforkey: longlongforkey: objectforkey: stringforkey: 24
NSUbiquitousKeyValueStore Zapisywanie danych setarray:forkey: setbool:forkey: setdata:forkey: setdictionary:forkey: setdouble:forkey: setlonglong:forkey: setobject:forkey: setstring:forkey: 25
Dokumenty w icloud 26
Uzyskiwanie dostępu NSFileManager URLForUbiquityContainerIdentifier: Podłączenie się do icloud UbiquityContainer pozwala na dostęp do icloud Dane są automatycznie synchronizowane z serwerem 27
GameCenter Baza danych w chmurze Pozwala na zapisywanie wyników i tworzenie rankingów gier Pozwala na zapisywanie osiągnięć i pokonanych poziomów 28
GameCenter Zapisywanie danych graczy i gry Framework GameKit Trzeba jawnie dodać tą obsługę. 29
Możliwości Nazwa Zadanie Ograniczenia Leaderboard Punktacja Ilość tablic wyników Achievement Osiągnięcia Ilość osiągnięć Challenges Matchmaking Implementacja w jednym z powyższych sposobów Gra Multiplayer Ilość graczy rozmiar pakietów danych wysyłanych 30
Uzyskiwanie dostępu do GameCenter Trzeba stworzyć profil aplikacji w portalu ios Provisioning Portal Tam należy ustawić możliwość korzystania z GameCenter Stworzyć identyfikator Dodać GameKit do aplikacji 31
Zakończenie KONIEC 32