Попытка NSLog ивара NSNumber в методе экземпляра - PullRequest
12 голосов
/ 12 января 2010

Я работаю над консольным приложением, которое отслеживает разные песни. Я работаю над тем, чтобы поднять класс песни с нуля, и натолкнулся на препятствие, пытаясь записать nsnumber, который был выделен на время песни, в оператор nslog:

//
//  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 (@"| %31@   |"  [self songDuration]);
NSLog (@"|                                       |");
NSLog (@"|                                       |");
NSLog (@"=========================================");

}
@end

По сути, я не уверен, как включить nsnumber в оператор nslog, когда вызывается метод print, плюс я не совсем уверен, как обращаться с этими nsobjects, в общем, они кажутся чем-то средним между объектом, который я бы создал тип переменного тока. Будем благодарны за любые разъяснения о том, как с ними обращаться.

Спасибо

Ник

1 Ответ

34 голосов
/ 12 января 2010

Чтобы вставить описание объекта в строку формата, используйте %@.

Вы также можете сделать это с NSStrings вашего названия / исполнителя / альбома, чтобы вам не нужно было сначала вызывать -UTF8String для них.

Что касается продолжительности вашей песни, вы можете либо напрямую записать NSNumber, либо записать представление с плавающей запятой или целочисленное представление, вызвав -floatValue или -integerValue и записав их с %f и %d.

Примеры:

NSLog(@"%@", songTitle);
NSLog(@"%@", songDuration);
NSLog(@"%f", [songDuration floatValue]);
NSLog(@"%d", [songDuration integerValue]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...