Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Geleitwort des Gutachters
Vorwort
1 Einführung
2 Einstieg in die Praxis
3 Aufwachen – analoger Wecker
4 Daten, Tabellen und Controller
5 Animationen und Layer
6 Programmieren, aber sicher
7 Jahrmarkt der Nützlichkeiten
A Die Buch-DVD
Stichwort

Download:
- ZIP, ca. 23,6 MB
Buch bestellen
Ihre Meinung?

Spacer
Apps entwickeln für iPhone und iPad von Klaus M. Rodewig, Clemens Wagner
Das Praxisbuch
Buch: Apps entwickeln für iPhone und iPad

Apps entwickeln für iPhone und iPad
geb., mit DVD
515 S., 34,90 Euro
Galileo Computing
ISBN 978-3-8362-1463-6
Pfeil 4 Daten, Tabellen und Controller
Pfeil 4.1 Benachrichtigungen
Pfeil 4.1.1 Benachrichtigungen empfangen
Pfeil 4.1.2 Eigene Benachrichtigungen verschicken
Pfeil 4.2 Core Data
Pfeil 4.2.1 Datenmodellierung
Pfeil 4.2.2 Implementierung von Entitätstypen
Pfeil 4.2.3 Einbindung von Core Data
Pfeil 4.2.4 Der Objektkontext
Pfeil 4.2.5 Die Nachrichten des Objektkontexts
Pfeil 4.2.6 Anlegen und Ändern von Entitäten in der Praxis
Pfeil 4.3 View-Rotationen
Pfeil 4.3.1 Flexible Views dank der Autoresizingmask
Pfeil 4.3.2 Lang lebe das Rotationsprinzip
Pfeil 4.3.3 Anpassung des Layouts
Pfeil 4.4 Texte, Bilder und Töne verwalten
Pfeil 4.4.1 Die Tastatur betritt die Bühne
Pfeil 4.4.2 Fotos aufnehmen
Pfeil 4.4.3 Töne aufnehmen und abspielen
Pfeil 4.5 Tableviews und Core Data
Pfeil 4.5.1 Tableviews
Pfeil 4.5.2 Tabellenzellen gestalten
Pfeil 4.5.3 Buttons in Tabellenzellen
Pfeil 4.5.4 Zellen löschen
Pfeil 4.5.5 Core Data II: Die Rückkehr der Objekte
Pfeil 4.5.6 Prädikate
Pfeil 4.5.7 Aktualisierung des Tableviews
Pfeil 4.5.8 Das Delegate des Fetchedresultscontrollers
Pfeil 4.5.9 Tabelleneinträge suchen
Pfeil 4.6 Containerviewcontroller
Pfeil 4.6.1 Der Navigationcontroller
Pfeil 4.6.2 Splitviewcontroller
Pfeil 4.6.3 Der Pageviewcontroller
Pfeil 4.6.4 Subview- und Containerviewcontroller

»Ich hoffe mein Schaden hat kein Gehirn genommen.«
– Homer Simpson

4 Daten, Tabellen und ControllerZur nächsten Überschrift

Das nächste Projekt behandelt ein Fototagebuch. Das ist ein Notizbuch, in dem Sie Texte, Bilder und Töne chronologisch geordnet ablegen können. Dieses Projekt ist wesentlich umfangreicher im Vergleich zum analogen Wecker des vorigen Kapitels. Die einzelnen Schritte zum Erstellen dieser App zu beschreiben, ist deshalb nicht möglich: Dies würde den Umfang unseres Buches sprengen. Das komplette Projekt finden Sie natürlich auf der DVD oder im GIT-Repository. Die Beschreibungen in diesem Kapitel konzentrieren sich auf die neuen und spannenderen Themen.


Galileo Computing - Zum Seitenanfang

4.1 BenachrichtigungenZur nächsten ÜberschriftZur vorigen Überschrift

Delegation ist sehr praktisch, wenn bestimmte Aufgaben oder Informationen an ein anderes Objekt weitergereicht werden sollen. Häufig gibt es aber Situationen, bei denen mehrere Objekte eine Information verarbeiten sollen.

Sie haben bereits das Applikationsdelegate und dessen Methoden kennengelernt. Es bietet Ihnen beispielsweise eine Methode an, mit der Sie Operationen ausführen können, bevor das iOS die App in den Hintergrund schickt. Sie können diese Methode benutzen, um den aktuellen Applikationszustand zu sichern. Das ist sicherlich für viele Applikationen ausreichend, bei denen diese Zustandsdaten zentral – vorzugsweise im Applikationsdelegate selber – gelagert sind. Wenn sich diese Daten hingegen über viele unterschiedliche Objekte verteilen, stößt dieses Vorgehen an seine Grenzen.


Galileo Computing - Zum Seitenanfang

4.1.1 Benachrichtigungen empfangenZur nächsten ÜberschriftZur vorigen Überschrift

Cocoa Touch bietet dafür aber ein weiteres Vorgehen an, das sich für solche Aufgabenstellungen besser eignet. Das geschieht über Notifications oder Benachrichtigungen – das sind Objekte der Klasse NSNotification, die innerhalb einer Applikation verschickt werden. Jede Benachrichtigung hat einen Typ, der durch eine Zeichenkettenkonstante repräsentiert wird. Jedes Objekt kann beliebige Benachrichtigungen empfangen. Sie müssen es dazu nur bei einem zentralen Objekt für die Verwaltung der Benachrichtigungen anmelden. Dieses Objekt hat die Klasse NSNotificationCenter.

Sie registrieren einen Empfänger über die Methode addObserver:selector: name:object: des Notificationcenters. Der Empfänger muss sich immer bei dem Center anmelden, über das der Nachrichtensender seine Benachrichtigungen schickt. In Cocoa Touch gibt es im Gegensatz zu MacOS X zurzeit nur ein Center. Sie können darauf über die Klassenmethode defaultCenter zugreifen.

Wenn das iOS eine Applikation in den Hintergrund schickt, verschickt die Applikation eine Benachrichtigung mit dem Typ UIApplicationWillResignActiveNotification. Sie können ein Objekt für den Empfang dieser Benachrichtigung wie folgt anmelden:

NSNotificationCenter *theCenter =
[NSNotificationCenter defaultCenter];
[theCenter addObserver:theObject
selector:@selector(applicationWillResignActive:)
name:UIApplicationWillResignActiveNotification
object:nil];

Listing 4.1 Anmelden eines Benachrichtigungsempfängers

Mit dem Parameter object der Registrierungsmethode können Sie die Benachrichtigungen nach dem Absender filtern. Wenn Sie bei der Registrierung hier einen Absender angeben, erhält der Empfänger nur Benachrichtigungen dieses Senders. Geben Sie hingegen nil (wie in Listing 4.1) an, erhält er alle Nachrichten.

Nach der Registrierung ruft das Notificationcenter immer die Methode applicationWillResignActive: des Objekts theObject auf, sobald die Applikation die entsprechende Benachrichtigung verschickt. Die Methode hat einen Parameter mit der Klasse NSNotification. Über die Property object des Notificationobjekts können Sie den Absender der Benachrichtigung ermitteln. Außerdem kann der Absender ein Dictionary mitschicken, auf das Sie über die Property userInfo zugreifen können.

Der kleine Unterschied

Achten Sie bei der Angabe des Selektors auf die richtige Schreibweise des Methodennamens. Gerade bei Methoden mit einem Parameter vergisst man schon mal leicht den Doppelpunkt am Ende. Der Selektor @selector(applicationWillResignActive:) beschreibt eine andere Nachricht als @selector(applicationWillResignActive).

- (void)applicationWillResignActive:
(NSNotification *)inNotification {
UIApplication *theApplication = inNotification.object;
...
}

Listing 4.2 Methode zum Empfangen von Benachrichtigungen

Über die Methoden removeObserver:name:object: und removeObserver: können Sie einen Nachrichtenempfänger wieder beim Notificationcenter abmelden. Während Sie mit der ersten Methode einzelne Benachrichtigungen abschalten können, können Sie über die zweite alle Benachrichtigungen eines Empfängers auf einmal abschalten.

Abmelden ist notwendig

Sie müssen jeden Nachrichtenempfänger vor seiner Zerstörung beim Notificationcenter abmelden. Andernfalls erzeugen Sie einen Dangling Pointer, was zu einem Programmabsturz führen kann.


Galileo Computing - Zum Seitenanfang

4.1.2 Eigene Benachrichtigungen verschickenZur vorigen Überschrift

Cocoa Touch stellt eine Vielzahl von Benachrichtigungen bereit, die Sie für die Entwicklung Ihrer Apps verwenden können. Sie können aber auch aus Ihren Klassen eigene Benachrichtigungen versenden. Beispielsweise könnte das Wecker-Beispielprogramm eine Benachrichtigung bei Alarmauslösung verschicken. Dazu sollten Sie sich zunächst einen Namen ausdenken, der das Ereignis möglichst gut beschreibt z. B. kAlarmClockHasFiredAlarmNotification. Da jedes beliebige Objekt diese Benachrichtigungen empfangen können soll, deklarieren Sie in der Headerdatei AlarmClockAppDelegate.h folgende Konstante:

extern NSString * const kAlarmClockHasFiredAlarmNotification;

Diese Deklaration sollten Sie in der Headerdatei vor der Klassendeklaration platzieren. In die Implementierungsdatei müssen Sie dann noch die entsprechende Definition einfügen:

NSString * const kAlarmClockHasFiredAlarmNotification =
@"kAlarmClockHasFiredAlarmNotification";
Tipp

Sie sollten für den Namen der Benachrichtigung immer eine Konstante verwenden. Zum einen vermeiden Sie dadurch Fehler aufgrund falsch geschriebener Benachrichtigungsnamen. Außerdem können Sie eventuelle Namenskonflikte sehr einfach beheben.

Aus der Methode application:didReceiveLocalNotification: können Sie jetzt die Benachrichtigung über eine der Methoden

  • postNotification:
  • postNotificationName:object:
  • postNotificationName:object:userInfo:

verschicken. Bei der ersten Variante müssen Sie das Notificationobjekt selbst erzeugen, während das bei den beiden anderen Varianten jeweils die Methode übernimmt. Im einfachsten Fall verwenden Sie die zweite Methode.

NSNotificationCenter *theCenter =
[NSNotificationCenter defaultCenter];
[theCenter postNotificationName:kAlarmClockHasFiredAlarmNotification object:self];

Listing 4.3 Verschicken einer einfachen Benachrichtigung

Wenn Sie aber auch den Nachrichtentext mit der Benachrichtigung verschicken wollen, sollten Sie die dritte Variante verwenden. Sie können bei ihr über den Parameter userInfo den Nachrichtentext übergeben.

NSNotificationCenter *theCenter =
[NSNotificationCenter defaultCenter];
NSDictionary *theInfo = [NSDictionary dictionaryWithObjectsAndKeys:inNotification.alertBody, @"alertBody", nil];
[theCenter postNotificationName:kAlarmClockHasFiredAlarmNotification object:self userInfo:theInfo];

Listing 4.4 Verschicken einer Benachrichtigung mit Parametern

Benachrichtigungen sind eine gute Möglichkeit, um mehrere andere Objekte zu informieren. Diese Technik ist eine einfache und sehr elegante Methode,um beliebige Empfänger lose an den Nachrichtensender zu koppeln.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.







<< zurück
  Zum Katalog
Zum Katalog: Apps entwickeln für iPhone und iPad





Apps entwickeln für iPhone und iPad
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchempfehlungen
Objective-C 2.0 & Cocoa





 Objective-C 2.0
 Cocoa


Zum Katalog: Mac OS X Lion






 Mac OS X Lion


Zum Katalog: Mac OS X und UNIX






 Mac OS X
 und UNIX


Zum Katalog: Android 3






 Android 3


Zum Katalog: Java ist auch eine Insel






 Java ist auch
 eine Insel


Zum Katalog: CSS






 CSS


Zum Katalog: jQuery






 jQuery


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Galileo Press 2011
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de