'Objective-C' Categoría


Fragmento muy corto: grabar una imagen en el álbum de fotos

Una forma sencilla de guardar una imagen en la foto del interior de nuestro dispositivo de aplicación (o carga a distancia):

Más información ...

NSURLConnection: Ejemplo de uso

NSURLConnection permite llevar a cabo una cotrollata conexión a un servidor remoto. Para utilizarlo:

1
2
3
4
5
6
7
8
9
10
11
/ / Los objetos suficientes para realizar un NSURLConnection
urlConnection; NSURLConnection * URLConnection;
mutableData; NSMutableData mutableData *;

/ / ...

urlString = @ "http://www.miodominio.com/documento.txt" ; NSString * urlString @ = "http://www.miodominio.com/documento.txt";

urlRequest = [ NSURLRequest requestWithURL : [ NSURL URLWithString : urlString ] ] ; NSURLRequest urlRequest * = [ NSURLRequest requestWithURL: [ NSURL URLWithString: urlString]];
/ / El delegado responderá a los estados de conexión
NSURLConnection alloc ] initWithRequest : urlRequest delegate : self ] ; URLConnection = [[ NSURLConnection alloc] initWithRequest: URLRequest delegado: auto];

Estos son los métodos delegados para comprobar el estado de la conexión:

[Cc_objc]

Más información ...

Fragmento muy corto: Objective-C, selector de NSString

Objective-C es un lenguaje maravilloso que te permite hacer cosas asombrosas. Uno de los aspectos más interesantes es su invocación dinámica de métodos (mensajes). Es posible, de hecho, para obtener la dirección de un mensaje de una cadena.

Más información ...

Fragmento muy corto: UIWebView, y los archivos PDF en la pantalla

El objeto UIWebView puede ser utilizado para la visualización de numerosos archivos. Por ejemplo, puede utilizarlo para mostrar -, así como películas de QuickTime o YouTube - archivos PDF o HTML en nuestro propio código.

Más información ...

NSString

NSString es una clase muy poderosa, te voy a mostrar algunas de las propiedades más utilizadas:

printf ()

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

Ejecute 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 de valor

1
2
3
/ / Convertir
doubleString = @ "123" ; NSString * doubleString @ = "123";
[ doubleString doubleValue ] ; valor doble = [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}

Más información ...

Fragmento muy corto: componer mensajes de correo electrónico a un iPhone, iPod o iPad

Para redactar un correo electrónico en el iPhone / iPod sólo tiene que añadir el marco MessageUI . En nuestro controlador para entrar en la inclusión del marco y poner en práctica el protocolo MFMailComposeViewControllerDelegate :

Más información ...

Objective-C los métodos de clase y Alloc auto

davanti al prototipo, tipo: Al definir y utilizar los métodos (mensajes) en Objective-C, que a menudo se enfrentan con la sintaxis curioso que muestra un signo - o + en la parte frontal del prototipo, escriba:

1
2
3
4
5
6
7
/ / En la definición
void ) mioMessaggio; - (Void) mioMessaggio;

/ / Del mismo modo, en la aplicación
void ) mioMessaggio { - (Void) {mioMessaggio
/ / ...
}

O bien:

1
2
3
4
5
6
7
/ / En la definición
void ) mioMessaggio; + (Void) mioMessaggio;

/ / Del mismo modo, en la aplicación
void ) mioMessaggio { + (Void) {mioMessaggio
/ / ...
}

La diferencia reside en el hecho de que los métodos definidos por el símbolo - son métodos, por ejemplo, a continuación, vinculado a un objeto. Los métodos definidos por el símbolo + se denominan métodos de la clase, ya que pueden llevarse a cabo sin asignar y crear una instancia del objeto en cuestión.

sono due classi, molto usate, che contengono svariati metodi di classe. NSString o UIView dos clases, ampliamente utilizados, los cuales contienen varios métodos de la clase. Los métodos de clase se utilizan constantemente, al igual que cuando nos inicializar o asignar cualquier objeto:

1
[ UIView alloc ] ; MyView UIView * = [UIView alloc];

El método alloc es un ejemplo clásico, presente en todos los objetos y, como lo demuestra el código, es un método de clase, como afirmó antes de la asignación del objeto en sí mismo.

Los métodos de clase pueden ser útiles en muchos casos, sobre todo cuando creamos nuestro objeto y queremos asignar e inicializar en menos líneas de código posible. Imagine tener que recoger una matriz en un conjunto de objetos definidos por nosotros. Definimos nuestro primer objeto, escribiendo el código en la forma más sencilla, sin necesidad de utilizar métodos de la clase:

1
2
3
4
5
6
7
8
9
10
/ / Definición de la interfaz en myObject.h
# Importar <Foundation/Foundation.h>

NSObject { @ Interfaz myObject: NSObject {
name; NSString * nombre;
lastname; NSString * apellido;
}

nonatomic, retain ) NSString * name; @ Propiedad (no atómica, retener) NSString * nombre;
nonatomic, retain ) NSString * lastname; @ Propiedad (no atómica, retener) NSString * Apellido;

La puesta en práctica, en el caso más simple, puede ser nada, o:

1
2
3
4
5
6
7
8
9
10
11
12
/ / MyObject.m

# Importar "myObject.h"
@ Aplicación myObject

Sintetizar @ nombre, apellido;

void ) dealloc { - (Void) {dealloc
; [Nombre de la liberación];
; [Comunicado de apellido];
; [Super dealloc];
}

¿Cuándo vamos a usar nuestro objeto, podemos utilizar un código como este:

1
2
3
[ myObject alloc ] ; myObject * obj = [myObject alloc];
"Mario" ; obj.name @ = "Juan";
"Rossi" ; obj.lastname @ = "Smith";

Si quisiéramos crear muchos objetos de este tipo, y colocarlos en un NSArray , la situación se vuelve un poco incómodo:

1
2
3
4
5
6
7
8
9
10
11
12
[ myObject alloc ] ; objA * myObject = [myObject alloc];
"Mario" ; objA.name @ = "Juan";
"Rossi" ; objA.lastname @ = "Smith";

[ myObject alloc ] ; objB * myObject = [myObject alloc];
"Carlo" ; objB.name @ = "Carlos";
"Bianchi" ; objB.lastname @ = "Smith";

elenco = [ NSArray arrayWithObjects : objA, objB, nil ] ; NSArray * lista = [ NSArray arrayWithObjects: objA, objB, nil];

; [ObjA liberación];
; [ObjB liberación];

per aggiungere man mano gli oggetti nel nostro elenco. Se podría mejorar el código mediante la creación de un bucle for o el uso de un NSMutableArray para agregar como objetos en nuestro directorio. . Sin embargo, el migliorebbe situación un poco, de vez en cuando permanecen fuera de la propiedad de configuración name y lastname . Sería espontánea, para empezar, añadir un método - objeto - initWithName que le permiten saltar a cualquier configuración de la propiedad, las cosas semplificandoci un poco. En el archivo de implementación myObject.m añadir:

1
2
3
4
5
6
7
id ) initWithName : ( NSString * ) stringName lastname : ( NSString * ) stringLastname { - (ID) initWithName: ( NSString *) apellido StringName: ( NSString *) {stringLastname
self = [ super init ] ) { if (self = [super init]) {
self.name = StringName;
self.lastname = stringLastname;
}
volver sí mismo;
}

Al hacerlo, han mejorado la situación, ahora se puede escribir:

1
2
3
4
5
6
7
[ [ myObject alloc ] initWithName : @ "Mario" lastname : @ "Rossi" ] ; objA * myObject = [[myObject alloc] initWithName: @ "Mario" apellido: @ "Smith"];
[ [ myObject alloc ] initWithName : @ "Carlo" lastname : @ "Bianchi" ] ; objB * myObject = [[myObject alloc] initWithName: @ "Charles" apellido: @ "Smith"];

elenco = [ NSArray arrayWithObjects : objA, objB, nil ] ; NSArray * lista = [ NSArray arrayWithObjects: objA, objB, nil];

; [ObjA liberación];
; [ObjB liberación];

, necessari per l'inserimento nell'array e liberare la memoria. Abbiammo y aún punteros objA y objB , necesarios para la entrada de la matriz y la memoria libre. Deseando que directamente podría entrar en la creación de un objeto en poblar la matriz, con autorelease para liberar memoria, pero el código aún no inactivo. Permítanme demostrar cómo resolver el problema con un método de clase. Primero de todo, reemplazar nuestro - (id)initWidthName con:

1
2
3
4
5
6
7
8
9
10
id ) initWithName : ( NSString * ) name lastname : ( NSString * ) lastname { + (Id) initWithName: ( NSString *) apellido nombre: ( NSString *) {lastname
* myObject tema;

item = [ [ self alloc ] init ] ) { if (elemento = [[ALLOC auto] init]) {
/ / Init
item.name = nombre;
item.lastname = apellido;
}
item autorelease ] ; retorno [tema disparador automático];
}

De esta manera hemos creado un método de clase que se asigna (en autorelase) y iniziallizza nuestro tema, antes de tener el puntero a la instancia. El código utilizado es entonces:

1
2
3
4
elenco = [ NSArray arrayWithObjects : NSArray * lista = [ NSArray arrayWithObjects:
@ "Mario" lastname : @ "Rossi" ] , [MiObjeto initWithName: @ "Mario" apellido: @ "Smith"],
@ "Carlo" lastname : @ "Bianchi" ] , [MiObjeto initWithName: @ "Charles" apellido: @ "Smith"],
; nil];

Mucho, mucho mejor ...

Más información ...

iPad: Las pantallas de la manija de arranque

El iPhone de Apple y el iPod se utiliza para administrar un solo archivo de imagen para cargar la aplicación, el archivo Default.png . El iPad de Apple, sin embargo, la diferente gestión dell'orientamente requiere la adopción de múltiples archivos de imagen, para asegurarse de que vea la pantalla de bienvenida all'orientamente corregido para el dispositivo. Durante el inicio de la aplicación, como lo hizo para el iPhone, no es posible tomar el código para "maravilla" como dispositivo orientado. Afortunadamente, se introdujo en la carga automática de los archivos especiales de la orientación:

Los archivos son compatibles actualmente, además de la clásica Default.png que nunca se debe utilizar, ya que se escala y se deforma de acuerdo a la orientación, son los siguientes:

  • Default-Portrait.png
  • Default-PortraitUpsideDown.png
  • Default-Landscape.png
  • Default-LandscapeLeft.png
  • Default-LandscapeRight.png

e LandscapeRight possono essere utilizzate per determinare orietamento e verso di quest'ultimo. La versiones PortraitUpsideDown , LandscapeLeft y LandscapeRight se puede utilizar para determinar orietamento y hacia esta última.

Para que el arranque de la aplicación, a continuación, según lo recomendado por Apple, es bueno para "rediseñar" - cuando sea necesario - a nuestros puntos de vista actuando dentro de application:didFinishLaunchingWithOptions .

Más información ...

Personalizar las secciones en un UITableView Agrupados

potremmo aver necessità di personalizzare la grafica dei titoli delle sezioni, come California o New York dell'esempio qui sotto. Cuando se utiliza un UITableView estilo Grouped es posible que necesitemos para personalizar el diseño de los títulos de las secciones, tales como California o Nueva York, el ejemplo de abajo.

UITableView

Para ello, utilice el siguiente código, colocarlo en el delegado, es decir, la clase que responde al protocolo UITableViewDelegate :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/ / Vuelvo mi punto de vista personalizado, en este caso un objeto
/ / Tipo UILabel
UIView * ) tableView : ( UITableView * ) tableView - (* UIView) tableView: (UITableView *) tableView
NSInteger ) section { viewForHeaderInSection: (NSInteger) section {

[ [ [ UILabel alloc ] initWithFrame : CGRectZero ] autorelease ] ; UILabel * label = [[[UILabel alloc] initWithFrame: CGRectZero] autorelease];
UIFont boldSystemFontOfSize : 20 ] ; label.font = [UIFont boldSystemFontOfSize: 20];
label.textAlignment = UITextAlignmentCenter;
UIColor blackColor ] ; label.shadowColor = [UIColor BlackColor];
1 , 1 ) ; label.shadowOffset CGSizeMake = (1, 1);
"Sezione" ; // Sostituire con un array come al solito Label.Text @ = "sección", / / Reemplazar con una gran variedad, como de costumbre
UIColor whiteColor ] ; label.textColor = [UIColor whiteColor];
UIColor clearColor ] ; label.backgroundColor = [UIColor clearColor];
; label.opaque = NO;

etiqueta de devolución;
}
/ / También debemos apoyar este mensaje no va a funcionar
CGFloat ) tableView : ( UITableView * ) tableView - (CGFloat) tableView: (UITableView *) tableView
NSInteger ) section { heightForHeaderInSection: (NSInteger) section {
; volver 44;
}

También es importante incluir heightForHeaderInSection , no funcionará.

Notas de Interés

o UIImageView , ho utilizzato per inizializzare il frame CGRectZero che corrisponde a CGRectMake(0,0,0,0) . En la creación de nuestra UILabel , que querer también podría ser un objeto más complejo, como un UIView o UIImageView , que utiliza para inicializar el frame CGRectZero que corresponde a CGRectMake(0,0,0,0) .

Más información ...

Cómo llegar Latitud y Longitud en Objective-C

El marco MapKit ofrece muchas funciones útiles, salvo el regreso de Latitud y Longitud de una dirección. En JavaScript, por ejemplo, puede utilizar el servicio prestado por Google geocodificación y discutido en Google Maps: Cómo llegar Latitud y Longitud de una dirección . El iPhone de Apple o el IPAD, sin embargo, puede superar el obstáculo mediante el uso de un diferentes servicios de Google. Específicamente, usted 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. El resultado devuelto 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 , es el parámetro de precisión Google (1-10). Los dos últimos valores son, por último, la latitud y longitud. Ahora vemos un prototipo de un método puede ser incluido en las 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 ; doble de la longitud = 0,0;

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

devolver la ubicación;
}

Notas de Interés

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

Fuente como

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


Descargar Fuente

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

Más información ...



Deje de SOPA