Artículos con la etiqueta 'NSString'


Fragmento muy breve: POST NSConnection con los parámetros

che in modalità POST . El objeto NSMutableURLRequest se puede utilizar en cualquiera de GET en el modo de POST . . Los parámetros, sin embargo, debe estar formateado como si estuvieran en GET , es decir, en la secuencia nome_campo1=valore1&nome_campo2=valore2&... . He aquí un fragmento útil para simplificar la construcción de campos:

Continuación ...

10 fragmentos de útiles de Objective-C

Mueva el doble toque en el simulador

El simulador de iPhone / iPad Xcode te permite simular el doble toque se presiona la tecla Alt. Esto es útil para simular la función de Pinch, que se utiliza para aumentar o desplazarse Mantener alejado contenido en el punto de vista con los objetos o UIWebView . Bueno, algunos de ustedes han notado que la simulación de los "dos dedos" procede de una manera simétrica siempre desde el centro de la pantalla. Para avanzar en este "centro" se encuentra a sólo mantenga presionada la tecla SHIFT.

Continuación ...

¿Cómo desarrollar en PHP con Xcode y Objective-C

¿Cuántos programadores de usar, también construir mi propia biblioteca de funciones listos para ser reutilizados en múltiples proyectos y múltiples contextos. Vamos a cambiar el título de este post, tal vez un poco arriesgado ", pero, sin embargo, como veremos, no lejos de la realidad.

En Objective-C se puede escribir y llamar a C / C + +, incluyendo el montaje, para el caso. Esta característica lo convierte en un lenguaje muy versátil y, en algunos aspectos, fenomenal. Por un lado, se puede utilizar y apreciar la sintaxis puramente de Objective-C, en el que usted puede correr más rápido el código portar escrito en ANSI C (quizás por Digital Unix o Sun) y puede encajar cómodamente en nuestro iPhone o iPad aplicaciones; por no hablar de todos los kernel BSD ya está disponible en Mac OS X!

Continuación ...

Fragmento muy breve: NSURL, y varias posibles

Devuelve el nombre de un archivo del objeto NSURLRequest , lo que le permite decidir si desea o no su extensión:

Continuación ...

NSString

NSString es una clase poderosa, déjame mostrarte algunas de las propiedades más utilizadas:

printf ()

1
2
/ / Printf ()
output = [ NSString stringWithFormat : @ "%@ / %@" , @ "primo" , @ "secondo" ] ; NSString * salida = [ NSString stringWithFormat: @ "% @ /% @", @ "primero", @ "segundo"];

Ejecutar el split ()

1
2
3
/ / Split () / explode ()
list = @ "Norman, Stanley, Fletcher" ; NSString * list = @ "Norman Stanley Fletcher";
listItems = [ list componentsSeparatedByString : @ ", " ] ; NSArray ListItems * = [lista componentsSeparatedByString: @ ""];

Convertir de cadena a valor

1
2
3
/ / Convertir
doubleString = @ "123" ; NSString * @ DoubleString = "123";
[ doubleString doubleValue ] ; doble valor = [DoubleString doubleValue];

Dentro de una cadena

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/ / Subcadena
searchString = @ "age" ; NSString * @ SearchString = "edad";

beginsTest = @ "Agencies" ; NSString * beginsTest @ = "Agencias";
[ beginsTest rangeOfString : searchString NSRange prefixRange = [beginsTest rangeOfString: SearchString
NSAnchoredSearch | NSCaseInsensitiveSearch ) ] ; opciones: (NSAnchoredSearch | NSCaseInsensitiveSearch)];

/ / PrefixRange = {0, 3}

endsTest = @ "BRICOLAGE" ; NSString * endsTest = @ "hágalo usted mismo";
[ endsTest rangeOfString : searchString NSRange suffixRange = [endsTest rangeOfString: SearchString
NSAnchoredSearch | NSCaseInsensitiveSearch | NSBackwardsSearch ) ] ; opciones: (NSAnchoredSearch | NSCaseInsensitiveSearch | NSBackwardsSearch)];

/ / SuffixRange = {6, 3}

Continuación ...

Cómo llegar Latitud y Longitud en Objective-C

El marco proporciona características útiles MapKit muchos, excepto el retorno de latitud y longitud de una dirección. En JavaScript, por ejemplo, puede utilizar el servicio proporcionado por Google geocodificación y discutido en Google Maps: Cómo llegar latitud y longitud de una dirección . Apple iPhone o iPad, sin embargo, puede superar este obstáculo mediante el uso de otro servicios de Google. En concreto, puede llamar directamente a la url:

1
http://maps.google.com/maps/geo?q = [dirección] & output = csv

¿Dónde está [indirizzo] para entrar en la cadena con la dirección que desea para transformar las coordenadas. La salida que se devuelve es de tipo:

1
200,8,41.9128300,12.2241172

). El primer valor, 200 , indica que todo ha ido bien ( 200 OK ). El segundo, 8 , Google es el parámetro de precisión (1-10). Los dos últimos valores son, por último, la latitud y longitud. Ahora podemos ver un prototipo de un método se puede incluir en nuestras aplicaciones:

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 *) dirección {
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 dirección: NSUTF8StringEncoding]];

listItems = [ locationString componentsSeparatedByString : @ "," ] ; NSArray ListItems * = [locationString componentsSeparatedByString: @ ""];

/ / Int zoom = 0;
0.0 ; latitud doble = 0.0;
0.0 ; longitud doble = 0.0;

listItems count ] > = 4 && [ [ listItems objectAtIndex : 0 ] isEqualToString : @ "200" ] ) { if ([ListItems cuenta]> = 4 & & [[ListItems objectAtIndex: 0] isEqualToString: @ "200"]) {
/ / Zoom = [[objectAtIndex ListItems: 1] intValue];
listItems objectAtIndex : 2 ] doubleValue ] ; Latitud = [[ListItems objectAtIndex: 2] doubleValue];
listItems objectAtIndex : 3 ] doubleValue ] ; Longitud = [[ListItems objectAtIndex: 3] doubleValue];
{ Else {}
/ / Error
}
CLLocationCoordinate2D ubicación;
location.latitude = latitud;
location.longitude = longitud;

Lugar de entrega;
}

Notas de interés

, alla stregua della funzione explode ( ) del PHP per intenderci. La cadena devuelta en locationString se "divide" por el método de componentsSeparatedByString , al igual que la función de explode ( ) en PHP, por ejemplo. Pongo el ejemplo que propone -, pero comentó - el código para recuperar siquiera el parámetro de precisión de Google, la precisión o factor de escala, que se denota por zoom .

Fuente como

Para completar, hice un pequeño ejemplo de aplicación con la que puedes probar el método propuesto más arriba, entrar en cualquier dirección y el iPhone se mostrará en el mapa.


Fuente Descarga

Doy las gracias al equipo de devAPP por la inspiración de este artículo.

Continuación ...

Fragmento muy breve: obtener la salida de una URL en Objective-C

Tal vez debería escribir "Muy, muy, fragmentos cortos", sin embargo, es una excelente y cómoda "truco" para mostrar lo que soy. Ejecución de los "dos" líneas de código se muestra a continuación, usted puede conseguir la salida de cualquier URL y manipularlo.

Continuación ...

Objective-C: NSLog () de C struct

o CGPoint , ad esempio. La sintaxis NSLog(@"%@", ... ); que funciona y se utiliza para obtener información sobre los objetos, pero no funciona en C tipos de datos tales como la estructura CGRect o CGPoint , por ejemplo. o NSStringFromCGPoint : Para aprovechar las ventajas de NSLog(@"%@", ... ); incluso en las estructuras de C-estilo se puede confiar en las funciones de conversión como NSStringFromCGRect() o 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 (@ "rectángulo Info:% @", NSStringFromCGRect (mioRect));
"Info point: %@" , NSStringFromCGPoint ( mioPoint ) ) ; NSLog (@ "punto de información:% @", NSStringFromCGPoint (mioPoint));

En concreto, es posible mejorar este procedimiento habla de pequeñas macros útiles, como:

1
# Definir NSLogRect (rect) NSLog (@ "0.0fx% s (% 0.0f,% 0.0f)% 0.0f%", # rect, rect.origin.x, rect.origin.y, rect.size.width , rect.size.height)

O:

1
2
3
4
# Definir NSLogCGPoint (punto) NSLog (@ "% s (% 0.0f,% 0.0f)", # punto.x punto, Point.y)

CGPoint ) { 32 , 64 } ; CGPoint mioPoint = (CGPoint) {32, 64};
; NSLogCGPoint (mioPoint);

Que dará como resultado:

1
32 , 64 ) mioPoint: (32, 64)

Continuación ...

iPhone SecondApp: Adivinar el número - Parte 2

Como se ha mencionado iPhone FirstApp: Adivinar el número - Parte 1 podemos ver cómo hacer una aplicación para el iPhone de Apple sin necesidad de utilizar Interface Builder! De hecho, vamos a eliminar los archivos físicos creados por Interface Builder, Xcode asistente. Al final de este post, entonces, tenemos una aplicación idéntica en todos los aspectos, a la conseguida en la primera parte, con la diferencia que vamos a lograr todos nuestros componentes visuales, incluyendo la ventana principal, por completo con el código.

La aplicación ya está hecho, si lo que desea es descargar, está disponible en mi repositorio de Google Code:

Me gustaría señalar de inmediato que el ZIP de este ejemplo que pesan menos que la última vez! :)

Creamos el proyecto

Comenzamos por crear nuestro proyecto SecondApp (para distinguirla de FirstApp), aunque esta vez elija Ventana de aplicaciones basado en:

newproject

Ahora vamos a borrar todo lo relacionado con Interface Builder. : eliminatelo anche dal file system, quindi selezionate Also Move to Trash . Elimine el archivo MainWindow.xib , que se encuentra en la carpeta de Resources : también se elimina del sistema de archivos, a continuación, seleccione también se mueven a la papelera. nella casella Main nib file base name : A continuación, seleccione el archivo SecondoApp-info.plist y eliminar la referencia a la MainWindow punta de caja principal nombre base del archivo:

deleteib

En este punto, ya no tienen Windows, por lo menos a través de Interface Builder. , e modifichiamo la funzione main() in questo modo: Por lo tanto, abrir el archivo main.m , situado en Other Sources , y modificar la función main() así:

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 * Piscina = [[ NSAutoreleasePool alloc] init];

/ / Al eliminar el archivo. XIB hemos perdido el punto
/ / Delegado a la Asamblea Parlamentaria Paritaria, a continuación, pasar a la "mano"
UIApplicationMain ( argc, argv, nil , @ "SecondAppAppDelegate" ) ; int retval = UIApplicationMain (argc, argv, nil, @ "SecondAppAppDelegate");

; [Comunicado de piscina];
volver retval;
}

Abrir SecondAppAppDelegate.me a continuación, crear la ventana principal en el código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void ) applicationDidFinishLaunching : ( UIApplication * ) application { - (Void) applicationDidFinishLaunching: (UIApplication *) {aplicación

/ / Obtener el tamaño de la pantalla (320, 480)
UIScreen mainScreen ] applicationFrame ] ; CGRect windowRect = [[Principal UIScreen] applicationFrame];
/ / Se crea una ventana - como lo hemos hecho en Interface Builder bye bye
[ [ UIWindow alloc ] initWithFrame : windowRect ] ; MainWindow UIWindow * = [[UIWindow alloc] initWithFrame: windowRect];
/ / Establecer el fondo de la ventana de color amarillo, para diferenciar
/ / El FirstApp solicitud anterior
[ UIColor yellowColor ] ] ; [SetBackgroundColor MainWindow: [UIColor yellowColor]];

mainWindow ] ; [Self SetWindow: MainWindow];
; [Ventana makeKeyAndVisible];

; [MainWindow liberación];
}

Ya se puede probar la aplicación, si usted consigue una ventana amarilla que lo hizo todo bien!

, necessario solo se si usa Interface Builder. En el archivo de SecondAppAppDelegate.h podemos eliminar IBOutlet , sólo es necesario si se utiliza Interface Builder. También añadir que nuestras variables globales, la última vez que había entrado en el controlador. A continuación, modificar el archivo SecondAppAppDelegate.h :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Importar <UIKit/UIKit.h>

NSObject <UIApplicationDelegate> { @ Interface SecondAppAppDelegate: NSObject {<UIApplicationDelegate>
UIWindow * ventana;

UITextField * número;
UIButton botón *;
numeroACaso int;
}

nonatomic, retain ) UIWindow * window; @ Propiedad (no atómica, retener) UIWindow ventana *;

void ) controllaNumero; - (Void) obtenerNumero;

@ End

, in quanto non stiamo usando Interface Builder. Una vez más, hemos preparado la definición del método controllaNumero , como la última vez, pero hemos eliminado la indicación IBAction , porque no se está utilizando Interface Builder.

Creamos la interfaz de código

Es el momento de crear código con todos los componentes de nuestra interfaz. ed inseriamo il seguente codice: Volvamos al archivo SecondAppAppDelegate.m , posizioniamoci antes [mainWindow release] e introduzca el siguiente código:

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
/ / Creamos la barra de título
[ [ 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: @ "Adivina el número"];
navigationItem animated : NO ] ; [MyNavigationBar pushNavigationItem: navigationItem animados: NO];
myNavigationBar ] ; [Ventana addSubview: myNavigationBar];

/ / Crear la etiqueta
[ [ 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 = @ "El iPhone ha diseñado un número del 1 al 10, trata de adivinar?"
myLabel ] ; [Ventana addSubview: myLabel];

/ / Crear entrada de texto
UITextField alloc ] initWithFrame : CGRectMake ( 10 , 120 , 300 , 30 ) ] ; = número [[UITextField alloc] initWithFrame: CGRectMake (10, 120, 300, 30)];
numero.borderStyle = UITextBorderStyleRoundedRect;
numero.textAlignment = UITextAlignmentCenter;
numero.keyboardType = UIKeyboardTypeNumberPad;
"Inserisci il numero" ; numero.placeholder = @ "Introduzca el número";
numero ] ; [Ventana addSubview: número];

/ / Crear el botón
UIButton buttonWithType : UIButtonTypeRoundedRect ] ; botón = [UIButton buttonWithType: UIButtonTypeRoundedRect];
10 , 180 , 300 , 30 ) ; bottone.frame CGRectMake = (10, 180, 300, 30);
@ "Premi qui" forState : UIControlStateNormal ] ; [Botón setTitle: @ "Click Aquí" Forst: UIControlStateNormal];
self action : @selector ( controllaNumero ) forControlEvents : UIControlEventTouchUpInside ] ; El botón [AddTarget: acción de auto: @ selector (obtenerNumero) forControlEvents: UIControlEventTouchUpInside];
bottone ] ; [Ventana addSubview: botón];

; [MyLabel liberación];
; [NavigationItem liberación];
; [MyNavigationBar liberación];

della scorsa volta, subito dopo il [mainWindow release]; inseriamo: Desde el ' applicationDidFinishLaunching corresponde a viewDidLoad que la última vez, justo después de la [mainWindow release]; insertar:

1
+ arc4random ( ) % 10 ; numeroACaso arc4random = 1 + () 10%;

Ahora que podemos hacer es implementar el método controllaNumero , que será idéntico (aparte del prototipo) para que el tiempo utilizado por última vez:

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) {obtenerNumero
"Premuto bottone di controlla numero" ) ; NSLog (@ "número presionado el botón de control");
[ numero.text integerValue ] ; numeroInserito = int [numero.text integerValue];
message; NSString * mensaje;
"Il numero inserito è %d" , numeroInserito ) ; NSLog (@ "El número introducido es% d", numeroInserito);
numeroInserito <numeroACaso ) { if (numeroInserito <numeroACaso) {
"Troppo basso..." ; message = @ "demasiado baja ...";
( numeroInserito> numeroACaso ) { } Else if (numeroInserito> numeroACaso) {
"Troppo alto..." ; message = @ "demasiado alto ...";
( numeroInserito == numeroACaso ) { } Else if (numeroInserito numeroACaso ==) {
"Bravo hai indovinato" ; message = @ "Bravo, lo habéis adivinado";
+ arc4random ( ) % 10 ; numeroACaso arc4random = 1 + () 10%;
"Numero pensato %d" , numeroACaso ) ; NSLog (@ "% d Número de pensamiento," numeroACaso);
}
[ [ UIAlertView alloc ] UIAlertView alertMessaggio * = [[UIAlertView alloc]
"Responso" initWithTitle: @ "Respuesta"
mensaje: mensaje
delegado: nil
"OK" cancelButtonTitle: @ "OK"
] ; otherButtonTitles: nil];
; [AlertMessaggio show];
; [AlertMessaggio liberación];
"" ; numero.text @ = "";
}

Ya hemos terminado!

Conclusiones y consideraciones

, proprio perchè volevo lasciarlo il più semplice e snello possibile e, anche, per dimostrare che non sono elementi sempre necessari. Este ejemplo no hacer uso directo de un UIView o UIViewController , sólo porque me quería ir lo más simple y ágil como sea posible y, también, para mostrar que los elementos no siempre son necesarias. Sin embargo insertar objetos directamente en la ventana puede tener algún sentido en este ejemplo y otros contextos esporádicos. portano comunque benefici in tantissimi altri casi, ein alcuni sono praticamente indispensabili; come avremo modo di vedere in futuro. El uso de UIView y UIViewController traer beneficios en muchos otros casos, sin embargo, algunos son ein prácticamente indispensable, como veremos en el futuro.

Continuación ...

iPhone FirstApp: Adivinar el número - Parte 1

La primera fuente que me levanté en mis manos ha sido escrito en básico y consistía en unas pocas líneas de código, para aclararme. Era un juego simple que genera un número aleatorio de 1 a 10 y, a través del teclado, compruebe que el número introducido se Maggioni, menor o igual al número aleatorio. A pesar de su simplicidad en bruto sigue siendo, para mí, uno de los mejores ejemplos - simple, divertida y práctica - para explicar a aquellos que no saben nada acerca de la programación lo que se entiende realmente por "programa de ordenador". Así que me decidí a proponer para el iPhone de Apple, tal vez ayude a alguien ...

Continuación ...