2010-01-11 10 views
11

Je travaille sur une application de console qui permet de suivre différentes chansons. Je travaille sur l'obtention de la classe chanson vers le haut sur le sol d'abord et se sont heurtées à un accroc en essayant de se connecter un NSNumber qui a été alloué pour la durée de la chanson dans une déclaration NSLog:Essayer de NSLog un NSarumber ivar dans une méthode d'instance

// 
// 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 

Fondamentalement, je ne suis pas Assurez-vous d'incorporer le nsnumber dans l'instruction nslog lorsque la méthode d'impression est appelée, et je ne sais pas vraiment comment gérer ces nsobjects en général, ils semblent un peu entre un objet que je voudrais créer et un type de ca. Toute précision sur la façon de les gérer serait appréciée.

Merci,

Nick

Répondre

32

Pour insérer la description d'un objet dans une chaîne de format, utilisez %@. Vous pouvez le faire avec votre titre/artiste/album NSStrings ainsi vous n'avez pas besoin d'appeler d'abord -UTF8String sur eux.

Pour la durée de votre chanson, vous pouvez vous connecter directement l'NSNumber ou connectez-vous une représentation flottante ou entier en appelant -floatValue ou -integerValue et vous connecter avec ceux %f et %d.

Exemples:

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