2010-01-11 14 views
11

Estoy trabajando en una aplicación de consola que rastrea canciones diferentes. Estoy trabajando en conseguir la clase canción arriba de la tierra primero y se han topado con un obstáculo que intenta registrar un NSNumber que ha sido asignado para la duración de la canción en un comunicado NSLog:Intentando NSLogar un NSNumber ivar en un método de instancia

// 
// Song.h 
// MusicCollection.15.9 
// 
// Created by Nicholas Iannone on 1/11/10. 
    // Copyright 2010 __MyCompanyName__. All rights reserved. 
    // 

    #import <Foundation/Foundation.h> 


@interface Song : NSObject { 

NSString *songTitle; 
NSString *songArtist; 
NSString *songAlbum; 
NSNumber *SongDuration; 
} 
@property (nonatomic, retain) NSString *songTitle, *songArtist, *songAlbum; 
@property (nonatomic, retain) NSNumber *SongDuration; 

-(id) init; 


-(void) printSong; 



@end 


// 
// Song.m 
// MusicCollection.15.9  
// 
// Created by Nicholas Iannone on 1/11/10. 
// Copyright 2010 __MyCompanyName__. All rights reserved. 
// 

#import "Song.h" 


@implementation Song 

@synthesize songTitle, songArtist, songAlbum; 
@synthesize SongDuration; 

-(id) init 
{ 

if (self = [super init]) { 

    [SongDuration numberWithInteger]; 
} 

-(void) printSong 
{ 



NSLog(@"===============Song Info=================="); 
NSLog (@"|          |"); 
NSLog (@"| %-31s |", [songTitle UTF8String]); 
NSLog (@"| %-31s |", [songArtist UTF8String]); 
NSLog (@"| %-31s |", [songAlbum UTF8String]);          
NSLog (@"| %[email protected] |" [self songDuration]); 
NSLog (@"|          |"); 
NSLog (@"|          |"); 
NSLog (@"========================================="); 

} 
@end 

Básicamente no estoy seguro de cómo incorporar el nsnumber en la declaración nslog cuando se llama al método de impresión, además de que no estoy realmente seguro de cómo tratar con estos nsobjetos en general, parecen estar entre un objeto que crearía y el tipo ca. Cualquier aclaración sobre cómo manejar estos sería apreciada.

Gracias,

Nick

Respuesta

32

Para insertar la descripción de un objeto en una cadena de formato, utilice %@.

También puede hacer esto con su título/artista/álbum NSStrings para que no tenga que llamar primero al -UTF8String.

Para su duración de la canción, puede registrar el NSNumber directa o ingrese un flotador o representación entera llamando -floatValue o -integerValue y el registro de las personas con %f y %d.

Ejemplos:

NSLog(@"%@", songTitle); 
NSLog(@"%@", songDuration); 
NSLog(@"%f", [songDuration floatValue]); 
NSLog(@"%d", [songDuration integerValue]); 
Cuestiones relacionadas