che in modalità POST . Das Objekt NSMutableURLRequest kann entweder verwendet werden GET -Modus in POST . . Die Parameter müssen jedoch formatiert, als ob sie in waren sein GET , in der Reihenfolge, dh nome_campo1=valore1&nome_campo2=valore2&... . Hier ist eine nützliche Snippet zum Bau von Feldern zu vereinfachen:
Artikel Tagged 'NSString "
Sehr kurze Auszug: NSConnection POST mit Parametern
10 nützliche Snippets Objective-C
Bewegen Sie den Doppel-Tap auf dem Simulator
Der Simulator iPhones / iPad Xcode können Sie die Doppel-tippen Sie auf die Alt-Taste gedrückt zu simulieren. Dies ist nützlich, um die Funktion von Pinch, dass zu vergrößern oder zu blättern fernhalten Inhalt in die Ansicht mit Objekten oder simulieren UIWebView . Nun, einige von euch bemerkt, dass die Simulation der "zwei Finger" geht in symmetrischer Weise immer von der Mitte des Bildschirms. So verschieben Sie diese "Mitte" ist auch nur bei gedrückter SHIFT-Taste.
Wie in PHP mit Xcode und Objective-C zu entwickeln
Wie viele Programmierer zu verwenden, habe ich auch meine eigene Bibliothek von Funktionen bereit, in mehreren Projekten und mehreren Kontexten wiederverwendet werden. Lassen Sie mich den Titel von diesem Post, vielleicht ein wenig "riskant, aber dennoch, wie wir sehen werden, nicht weit von der Realität.
In Objective-C können Sie schreiben und nennen C / C + +, einschließlich der Montage für diese Angelegenheit. Diese Eigenschaft macht ihn zu einem sehr vielseitigen Sprache und, in gewisser Hinsicht phänomenal. Auf der einen Seite, können Sie und schätzen die rein Syntax von Objective-C, auf der anderen Seite können Sie schneller Portieren von Code in ANSI C geschrieben wurden (vielleicht für Digital Unix oder Sun) und kann bequem in unsere iPhone-oder iPad-Anwendungen fit; ganz zu schweigen von all den BSD-Kernel ist bereits auf Mac OS X! verfügbar
Sehr kurze Auszug: NSURL und verschiedene mögliche
Gibt den Namen einer Datei aus dem Objekt NSURLRequest , so dass Sie, ob seine Verlängerung beschließen:
NSString
NSString ist eine leistungsstarke Klasse, lassen Sie mich Ihnen einige der am häufigsten verwendeten Eigenschaften:
printf ()
1 2 |
Führen Sie die split ()
1 2 3 |
Konvertieren von String-Wert
1 2 3 | / / Konvertieren doubleString = @ "123" ; NSString * @ doubleString = "123"; [ doubleString doubleValue ] ; double-Wert = [doubleString doubleValue]; |
Innerhalb eines string
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | / / Substring searchString = @ "age" ; NSString * @ searchString = "Alter"; beginsTest = @ "Agencies" ; NSString * beginsTest @ = "Agenturen"; [ beginsTest rangeOfString : searchString NSRange prefixRange = [beginsTest rangeOfString: searchString NSAnchoredSearch | NSCaseInsensitiveSearch ) ] ; Optionen: (NSAnchoredSearch | NSCaseInsensitiveSearch)]; / / PrefixRange = {0, 3} endsTest = @ "BRICOLAGE" ; NSString * endsTest = @ "DIY"; [ endsTest rangeOfString : searchString NSRange suffixRange = [endsTest rangeOfString: searchString NSAnchoredSearch | NSCaseInsensitiveSearch | NSBackwardsSearch ) ] ; Optionen: (NSAnchoredSearch | NSCaseInsensitiveSearch | NSBackwardsSearch)]; / / SuffixRange = {6, 3} |
Wie bekomme ich Längen-und Breitengrad in Objective-C
Das Framework stellt MapKit viele nützliche Funktionen, mit Ausnahme der Rückgabe von Längen-und Breitengrad von einer Adresse. In JavaScript, zum Beispiel, können Sie den Service von Google Geocoding zur Verfügung gestellt und diskutiert in Google Maps: Wie man Breitengrad und Längengrad von einer Adresse zu bekommen . Apple iPhone oder iPad, können Sie jedoch dieses Hindernis mit einem anderen Google-Services zu überwinden. Insbesondere können Sie direkt aufrufen, um den URL:
1 | http://maps.google.com/maps/geo?q = [Adresse] & output = csv |
Wo ist [indirizzo] , um den String mit der Adresse, die Sie wollen, um die Koordinaten zu transformieren geben. Die Ausgabe, ist vom Typ:
1 | 200,8,41.9128300,12.2241172 |
). Der erste Wert, 200 , zeigt, dass alles gut gegangen ist ( 200 OK ). Die zweite, 8 , ist Google die Richtigkeit Parameter (1-10). Die letzten beiden Werte sind schließlich Längen-und Breitengrad. Jetzt sehen wir einen Prototyp für ein Verfahren in unseren Anwendungen können enthalten sein:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | CLLocationCoordinate2D ) getLocationFromAddress : ( NSString * ) address { - (CLLocationCoordinate2D) getLocationFromAddress: ( NSString *) Adresse { urlString = [ NSString stringWithFormat : @ "http://maps.google.com/maps/geo?q=%@&output=csv" , NSString * urlString = [ NSString stringWithFormat: @ "% @ http://maps.google.com/maps/geo?q = & output = csv" NSUTF8StringEncoding ] ] ; [StringByAddingPercentEscapesUsingEncoding Adresse: NSUTF8StringEncoding]]; listItems = [ locationString componentsSeparatedByString : @ "," ] ; NSArray * ListItems = [locationString componentsSeparatedByString: @ ""]; / / Int zoom = 0; 0.0 ; Doppel-Breite = 0,0; 0.0 ; Doppel-Länge = 0,0; listItems count ] > = 4 && [ [ listItems objectAtIndex : 0 ] isEqualToString : @ "200" ] ) { if ([ListItems count]> = 4 & & [[ListItems objectAtIndex: 0] isEqualToString: @ "200"]) { / / Zoom = [[ListItems objectAtIndex: 1] intValue]; listItems objectAtIndex : 2 ] doubleValue ] ; Latitude = [[ListItems objectAtIndex: 2] doubleValue]; listItems objectAtIndex : 3 ] doubleValue ] ; Länge = [[ListItems objectAtIndex: 3] doubleValue]; { Else {} / / Fehler } CLLocationCoordinate2D location; location.latitude = Breite; location.longitude = Länge; Ort der Rückgabe ist; } |
Hinweise von Interesse
, alla stregua della funzione explode ( ) del PHP per intenderci. Der String zurückgegeben in locationString "split" wird durch das Verfahren componentsSeparatedByString , wie die Funktion explode ( ) in PHP zum Beispiel. Ich habe das Beispiel, das ich vorgeschlagen - aber bemerkte - der Code selbst die Google Genauigkeit Parameter, Genauigkeit oder Skalierungsfaktor, bezeichnen wir abrufen zoom .
Quelle als
Für Vollständigkeit, ich machte kleine Beispiel-Anwendung , mit der Sie die Methode oben vorgeschlagenen versuchen können, geben Sie eine beliebige Adresse und das iPhone wird auf der Karte zu zeigen.
Ich danke dem Team devapp für die Inspiration dieses Artikels.
Sehr kurze Auszug: Holen Sie sich die Ausgabe einer URL in Objective-C
Vielleicht sollte ich schreiben "Sehr sehr sehr kurze Schnipsel", jedoch ist eine ausgezeichnete und komfortable "Trick" zu zeigen, was ich bin. Ausführen der "zwei" Zeilen Code unten gezeigt, können Sie die Ausgabe eines beliebigen URL und manipulieren.
Objective-C: NSLog () von C struct
o CGPoint , ad esempio. Die Syntax NSLog(@"%@", ... ); funktioniert und wird verwendet, um Informationen über Objekte zu erhalten, aber nicht auf C-Datentypen wie struct Arbeit CGRect oder CGPoint , zum Beispiel. o NSStringFromCGPoint : Um die Vorteile zu nehmen NSLog(@"%@", ... ); auch auf C-Stil Strukturen können auf Konvertierungsfunktionen wie verlassen NSStringFromCGRect() oder NSStringFromCGPoint :
1 2 3 4 5 | CGRect ) { 10 , 20 , 30 , 40 } ; CGRect mioRect = (CGRect) {10, 20, 30, 40}; CGPoint ) { 32 , 64 } ; CGPoint mioPoint = (CGPoint) {32, 64}; / / "Info rettangolo: %@" , NSStringFromCGRect ( mioRect ) ) ; NSLog (@ "Info Rechteck:% @", NSStringFromCGRect (mioRect)); "Info point: %@" , NSStringFromCGPoint ( mioPoint ) ) ; NSLog (@ "Info Point:% @", NSStringFromCGPoint (mioPoint)); |
Insbesondere ist es möglich, dieses Verfahren schreibt der kleine nützliche Makros wie zu verbessern:
1 | # Define NSLogRect (rect) NSLog (@ "% s (% 0.0f,% 0.0f)% 0.0f% 0.0fx", # rect, rect.origin.x, rect.origin.y, rect.size.width , rect.size.height) |
Oder:
1 2 3 4 | # Define NSLogCGPoint (Punkt) NSLog (@ "% s (% 0.0f,% 0.0f)" # point.x Punkt Point.y) CGPoint ) { 32 , 64 } ; CGPoint mioPoint = (CGPoint) {32, 64}; ; NSLogCGPoint (mioPoint); |
Das wird als Ausgabe zu geben:
1 | 32 , 64 ) mioPoint: (32, 64) |
iPhone SecondApp: Guess der Zahl - Teil 2
Wie bereits erwähnt FirstApp iPhone: Guess der Zahl - Teil 1 sehen wir, wie Sie eine Anwendung für das Apple iPhone ohne Interface Builder zu machen! In der Tat werden wir beseitigen physischen Dateien, die von Interface Builder, Xcode-Assistenten erstellt. Am Ende von diesem Post, dann haben wir eine Anwendung in jeder Hinsicht identisch, wie in der ersten Hälfte erreicht, mit dem Unterschied, dass wir alle unsere visuelle Komponenten, darunter das Hauptfenster, vollständig zu erreichen, um Code.
Die Anwendung bereits, wenn Sie gerade herunterladen möchten, gibt es auf meiner Google-Code-Repository:
Ich möchte darauf hinweisen, sofort als ZIP diesem Beispiel mit einem Gewicht von weniger als das letzte Mal! ![]()
Wir schaffen das Projekt
Wir beginnen mit der Erstellung unseres Projektes SecondApp (um es von FirstApp zu unterscheiden), obwohl dieses Zeitfenster-basierten Anwendung zu wählen:

Nun wollen wir löschen alles, was mit Interface Builder. : eliminatelo anche dal file system, quindi selezionate Also Move to Trash . Löschen Sie die Datei MainWindow.xib , in den Ordner Resources : auch löschen aus dem Dateisystem, und wählen Sie dann auch den Papierkorb verschieben. nella casella Main nib file base name : Wählen Sie dann die Datei SecondoApp-info.plist und löschen Sie den Verweis auf die MainWindow nib box Main-base file name:

An diesem Punkt haben wir nicht mehr jedem Windows-, zumindest über Interface Builder. , e modifichiamo la funzione main() in questo modo: So öffnen wir die Datei main.m , in Lage Other Sources , und ändern Sie die Funktion main() wie folgt aus:
1 2 3 4 5 6 7 8 9 10 11 | int argc, char * argv [ ] ) { int main (int argc, char * argv []) { pool = [ [ NSAutoreleasePool alloc ] init ] ; NSAutoreleasePool * pool = [[ NSAutoreleasePool alloc] init]; / / Durch das Entfernen der Datei. XIB verpassten wir den Punkt / / Delegierter des JPA, dann übergeben Sie es an "Hand" UIApplicationMain ( argc, argv, nil , @ "SecondAppAppDelegate" ) ; int retVal = UIApplicationMain (argc, argv, nil, @ "SecondAppAppDelegate"); ; [Pool release]; Rückkehr retVal; } |
Öffnen SecondAppAppDelegate.me erstellen Sie dann im Hauptfenster in Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | void ) applicationDidFinishLaunching : ( UIApplication * ) application { - (Void) applicationDidFinishLaunching: (UIApplication *) Anwendung { / / Holen Sie sich die Bildschirmgröße (320, 480) UIScreen mainScreen ] applicationFrame ] ; CGRect windowRect = [[UIScreen Hauptseite] applicationFrame]; / / Fenster erzeugen - wie wir in Interface Builder getan haben bye bye [ [ UIWindow alloc ] initWithFrame : windowRect ] ; MainWindow UIWindow * = [[UIWindow alloc] initWithFrame: windowRect]; / / Stellen Sie die Hintergrundfarbe des Fensters zu gelb, zu differenzieren / / Die bisherige Anwendung FirstApp [ UIColor yellowColor ] ] ; [MainWindow setBackgroundColor: [UIColor yellowColor]]; mainWindow ] ; [Self setWindow: MainWindow]; ; [Window makeKeyAndVisible]; ; [MainWindow release]; } |
Sie können bereits die Anwendung zu testen, wenn Sie ein gelbes Fenster hast du alles richtig machen!
, necessario solo se si usa Interface Builder. In der Datei SecondAppAppDelegate.h können wir beseitigen IBOutlet nur erforderlich, wenn Sie Interface Builder verwenden. Auch hier hinzufügen, dass unsere globale Variablen, die letzte Zeit, die wir in den Controller eingegeben hatte. Dann ändern Sie die Datei SecondAppAppDelegate.h :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | # Import <UIKit/UIKit.h> NSObject <UIApplicationDelegate> { @ Interface SecondAppAppDelegate: NSObject {<UIApplicationDelegate> UIWindow * window; UITextField * Zahl; UIButton * Taste; numeroACaso int; } nonatomic, retain ) UIWindow * window; @ Property (atomare, behalten) UIWindow * window; void ) controllaNumero; - (Void) getNumber; @ End |
, in quanto non stiamo usando Interface Builder. Wieder haben wir die Definition der Methode zubereitet controllaNumero , wie beim letzten Mal, aber wir haben den Hinweis beseitigt IBAction , weil Sie sich nicht mit Interface Builder.
Wir bilden die Schnittstelle von Code
Es ist Zeit, um Code mit allen Komponenten unserer Schnittstelle zu erstellen. ed inseriamo il seguente codice: Gehen wir zurück zu der Datei SecondAppAppDelegate.m , posizioniamoci vor [mainWindow release] und fügen Sie den folgenden Code ein:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | / / Erstellen der Titelleiste [ [ UINavigationBar alloc ] initWithFrame : CGRectMake ( 0.0 , 0.0 , 320.0 , 44.0 ) ] ; UINavigationBar myNavigationBar * = [[UINavigationBar alloc] initWithFrame: CGRectMake (0,0, 0,0, 320,0, 44,0)]; myNavigationBar.barStyle = UIBarStyleDefault; [ [ UINavigationItem alloc ] initWithTitle : @ "Indovina un numero" ] ; UINavigationItem navigationItem * = [[UINavigationItem alloc] initWithTitle: @ "Guess eine Reihe"]; navigationItem animated : NO ] ; [MyNavigationBar pushNavigationItem: navigationItem animated: NO]; myNavigationBar ] ; [Window addSubview: myNavigationBar]; / / Erstellen der Etiketten [ [ UILabel alloc ] initWithFrame : CGRectMake ( 10 , 50 , 300 , 80 ) ] ; UILabel myLabel * = [[UILabel alloc] initWithFrame: CGRectMake (10, 50, 300, 80)]; UIColor clearColor ] ; myLabel.backgroundColor = [UIColor clearColor]; ; myLabel.numberOfLines = 2; "iPhone ha pensato un numero da 1 a 10, prova ad indovinarlo?" ; myLabel.text = @ "Das iPhone hat eine Reihe von 1 bis 10 konzipiert, versuchen zu erraten?" myLabel ] ; [Window addSubview: myLabel]; / / Erstellen von Text-Eingabe UITextField alloc ] initWithFrame : CGRectMake ( 10 , 120 , 300 , 30 ) ] ; number = [[UITextField alloc] initWithFrame: CGRectMake (10, 120, 300, 30)]; numero.borderStyle = UITextBorderStyleRoundedRect; numero.textAlignment = UITextAlignmentCenter; numero.keyboardType = UIKeyboardTypeNumberPad; "Inserisci il numero" ; numero.placeholder = @ "Geben Sie die Nummer"; numero ] ; [Window addSubview: number]; / / Erstellen der Taste UIButton buttonWithType : UIButtonTypeRoundedRect ] ; button = [UIButton buttonWithType: UIButtonTypeRoundedRect]; 10 , 180 , 300 , 30 ) ; bottone.frame = CGRectMake (10, 180, 300, 30); @ "Premi qui" forState : UIControlStateNormal ] ; [Button setTitle: @ "Hier klicken" Forst: UIControlStateNormal]; self action : @selector ( controllaNumero ) forControlEvents : UIControlEventTouchUpInside ] ; [AddTarget Button: self Aktion: @ selector (getNumber) forControlEvents: UIControlEventTouchUpInside]; bottone ] ; [Window addSubview: Taste]; ; [MyLabel release]; ; [NavigationItem release]; ; [MyNavigationBar release]; |
della scorsa volta, subito dopo il [mainWindow release]; inseriamo: Da die " applicationDidFinishLaunching entspricht viewDidLoad wie beim letzten Mal, kurz nach der [mainWindow release]; einzufügen:
1 | + arc4random ( ) % 10 ; numeroACaso arc4random = 1 + () 10%; |
Jetzt können wir tun, ist die Methode zu implementieren controllaNumero , die gleich wird (abgesehen von den Prototyp) zu, die verwendet werden letzte Mal:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | void ) controllaNumero { - (Void) {getNumber "Premuto bottone di controlla numero" ) ; NSLog (@ "-Taste gedrückt Kontrollnummer"); [ numero.text integerValue ] ; numeroInserito = int [numero.text integerWert]; message; NSString * message; "Il numero inserito è %d" , numeroInserito ) ; NSLog (@ "Die eingegebene Zahl ist% d", numeroInserito); numeroInserito <numeroACaso ) { if (numeroInserito <numeroACaso) { "Troppo basso..." ; message = @ "Too Low ..."; ( numeroInserito> numeroACaso ) { } Else if (numeroInserito> numeroACaso) { "Troppo alto..." ; message = @ "Zu hohe ..."; ( numeroInserito == numeroACaso ) { } Else if (numeroInserito numeroACaso ==) { "Bravo hai indovinato" ; message = @ "Bravo, Sie haben es erraten"; + arc4random ( ) % 10 ; numeroACaso arc4random = 1 + () 10%; "Numero pensato %d" , numeroACaso ) ; NSLog (@ "Number% d dachte:" numeroACaso); } [ [ UIAlertView alloc ] UIAlertView alertMessaggio * = [[UIAlertView alloc] "Responso" initWithTitle: @ "Response" Nachricht: Nachricht Delegierter: nil "OK" cancelButtonTitle: @ "OK" ] ; otherButtonTitles: nil]; ; [AlertMessaggio show]; ; [AlertMessaggio release]; "" ; numero.text @ = ""; } |
Wir sind fertig!
Schlussfolgerungen und Überlegungen
, proprio perchè volevo lasciarlo il più semplice e snello possibile e, anche, per dimostrare che non sono elementi sempre necessari. Dieses Beispiel macht nicht den direkten Einsatz eines UIView oder UIViewController , nur weil ich überlasse es so einfach und einheitlich wie möglich wollte und auch, um zu zeigen, dass die Elemente nicht immer notwendig. Allerdings Einfügen von Objekten direkt in das Fenster kann einen Sinn haben in diesem Beispiel und andere sporadische Kontexten. portano comunque benefici in tantissimi altri casi, ein alcuni sono praticamente indispensabili; come avremo modo di vedere in futuro. Die Verwendung von UIView und UIViewController Vorteile bringen in vielen anderen Fällen jedoch sind einige nahezu unverzichtbar Ein, wie wir in die Zukunft sehen.
iPhone FirstApp: Guess der Zahl - Teil 1
Die erste Quelle, die ich in meine Hände erhob, war in Basic geschrieben und bestand aus ein paar Zeilen Code, für erhellende mich. Es war ein einfaches Spiel, das eine Zufallszahl generiert von 1 bis 10, und durch Tastatureingabe, ob die eingegebene Zahl Maggioni wurde, weniger als oder gleich der Zufallszahl. Trotz seiner rauen Einfachheit bleibt für mich eines der besten Beispiele - einfach, Spaß und praktisch - zu denen, die nichts weiß über die Programmierung, was eigentlich für "Computer-Programm" gemeint zu erklären. Also habe ich es für Apple iPhone vorschlagen entschieden haben, werden vielleicht jemand helfen ...








Neueste Kommentare
Simon : Es ärgert gestört wieder ein und verwenden, die Platz für diese Dinge ... aber es funktioniert nicht ...
Giovambattista Fazioli : @ Simon: Was könnte darauf zurückzuführen sein, die Syntax, die ich verwendet, die speziell für PHP 5 +,...
Simon : Ich habe versucht gestern Abend, alles in functions.php, okay, jquery Formulare und Tabs jQueryUI ihnen ...
Giovambattista Fazioli : @ Simon: Ich empfehle Reinigung zu einem Code wie in ein ...
Simon : @ Giovambattista Fazioli: Vielen Dank für Ihre Geduld, es ist alles klar ... jetzt fühle ich mich jetzt ...