CocoaGurus
September 06, 2010, 04:43:56 PM *
Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
News: Bienvenido a CocoaGurus
 
   Home   Help Search Calendar Login Register  
Pages: [1]
  Print  
Author Topic: Cursos Cocoa Macworld Dudas  (Read 736 times)
alvarofrutos
Newbie
*
Posts: 1


View Profile
« on: July 09, 2009, 03:21:54 PM »

Hola y gracias de antemano:

He leído los Cursos Cocoa publicados en MacWorld y he seguido todos los pasos hasta que me he atascado justo antes de la parte de las imágenes, cuando se prueba la aplicación.
Creo que en el capítulo V hay algún error ya que la clase creada en el capítulo II aparece como "Person", en vez de como "Persona". Todos los otros términos definidos en la clase del capítulo II aparecen en inglés, como "familyName1" en vez de "segundoApellido" e incluso la NSMutableArray *personas aparece como NSMutableArray *persons. De igual manera la NSView definida en el capítulo I aparece como NSImageView.

Omitiendo estos errores he escrito el código siguiendo los pasos marcados, pero a la hora de compilar el programa obtengo varios errores. Me dice que la función Persona no está definida. He mirado un poco por internet y en algunos sitios, antes de la interface, llaman a la clase con: #import "laClaseCorrespondiente.h". Sin embargo en otros ejemplos no lo hacen. No sé por que obtengo ese error, a si que envío el código de mi programa. Agradecería enormemente cualquier ayuda o un código para poder compararlo.

Por cierto, si añado esa línea antes de la interface (#import "Persona.h"), al ejecutar el programa y dar el botón + la aplicación se cuelga y sale con el error: "objc_msgSend"

El código lo envío con los nombres de los objetos de la clase "Persona" en español, espero que no suponga ningún problema.

Muchas gracias por el artículo a Geppy Parziale.

AppController.h:


#import <Cocoa/Cocoa.h>

@interface AppController : NSObject {
   
    IBOutlet NSTextField *name;
    IBOutlet NSTextField *surname1;
    IBOutlet NSTextField *surname2;
    IBOutlet NSTextField *dateOfBirth;
    IBOutlet NSTextField *nationality;
    IBOutlet NSView *imageView;               //Aquí dejo el IBOutlet como NSView, en vez de NSImageView.
    IBOutlet NSTableView *tableview;
   
   NSMutableArray *personas;
   
   BOOL isMale;
}

@property (nonatomic, retain) IBOutlet NSTextField *name;
@property (nonatomic, retain) IBOutlet NSTextField *surname1;
@property (nonatomic, retain) IBOutlet NSTextField *surname2;
@property (nonatomic, retain) IBOutlet NSTextField *dateOfBirth;
@property (nonatomic, retain) IBOutlet NSView *imageView;
@property (nonatomic, retain) IBOutlet NSTextField *nationality;

- (IBAction)addPerson:(id)sender;
- (IBAction)choseSex:(id)sender;
- (IBAction)removePerson:(id)sender;
- (IBAction)openPanel:(id)sender;

@end

AppController.m:

#import "AppController.h"

@implementation AppController

- (id) init
{
   self = [super init];
   if (self != nil) {
      personas = [[NSMutableArray alloc] init];
   }
   
    return self;
}



- (void) dealloc
{
   [personas release];
   [name release];
   [surname1 release];
   [surname2 release];
   [dateOfBirth release];
   [nationality release];
   [super dealloc];
}


@synthesize name;
@synthesize surname1;
@synthesize surname2;
@synthesize dateOfBirth;
@synthesize imageView;
@synthesize nationality;



- (NSInteger)numberOfRowsInTableView:(NSTableView *)aTableView
{
   return [personas count];
}

- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex
{
   NSString *identifier = [aTableColumn identifier];
   Persona *p = [personas objectAtIndex:rowIndex];
   return [p valueForKey:identifier];
}

- (void)tableView:(NSTableView *)aTableView setObjectValue:(id)anObject forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex
{
   NSString *identifier = [aTableColumn identifier];
   Persona *p = [personas objectAtIndex:rowIndex];
   [p setValue:anObject forKey:identifier];
}




- (IBAction)addPerson:(id)sender {
   
   Persona *person = [[Persona alloc] init];
   person.nombre = [name stringValue];
   person.primerApellido = [surname1 stringValue];
   person.segundoApellido = [surname2 stringValue];
   
   if (isMale)
      person.sexo = @"H";
   else
      person.sexo = @"M";
   
   person.fechaDeNacimiento = [dateOfBirth stringValue];
   person.nacionalidad = [nationality stringValue];
   person.nombreImagen = @"";
   
   
   [personas addObject:person];
   [person release];
   
   [name setStringValue:@""];
   [surname1 setStringValue:@""];
   [surname2 setStringValue:@""];
   [dateOfBirth setStringValue:@""];
   [nationality setStringValue:@""];
   
   [tableview reloadData];
   
}

- (IBAction)choseSex:(id)sender {
   
   switch ([[sender selectedItem] tag])
   {
      case 0:
         isMale = YES;
         break;
      case 1:
         isMale = NO;
         break;
   }
   
}

- (IBAction)removePerson:(id)sender {
   
   NSIndexSet *rows = [tableview selectedRowIndexes];
   [personas removeObjectsAtIndexes:rows];
   
   [tableview reloadData];
   
}


@end



Persona.h:

#import <Cocoa/Cocoa.h>


@interface Persona : NSObject {
   
   NSString *nombre;
   NSString *primerApellido;
   NSString *segundoApellido;
   NSString *sexo;
   NSString *fechaDeNacimiento;
   NSString *nacionalidad;
   NSString *nombreImagen;

}

@property(retain, nonatomic) NSString *nombre;
@property(retain, nonatomic) NSString *primerApellido;
@property(retain, nonatomic) NSString *segundoApellido;
@property(retain, nonatomic) NSString *sexo;
@property(retain, nonatomic) NSString *fechaDeNacimiento;
@property(retain, nonatomic) NSString *nacionalidad;
@property(retain, nonatomic) NSString *nombreImagen;

@end

Persona.m:



#import "Persona.h"


@implementation Persona

@synthesize nombre;
@synthesize primerApellido;
@synthesize segundoApellido;
@synthesize sexo;
@synthesize fechaDeNacimiento;
@synthesize nacionalidad;
@synthesize nombreImagen;

@end
« Last Edit: July 09, 2009, 03:32:07 PM by alvarofrutos » Logged
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.8 | SMF © 2006-2008, Simple Machines LLC Valid XHTML 1.0! Valid CSS!