2012-04-09 22 views
5

Tengo un requisito donde tengo un video que se reproduce usando MPMediaPlayerController. Junto con el video, tengo dos botones donde necesito capturar el tiempo de reproducción actual cuando se hace clic en el botón y almacenar todos los clics relevantes individualmente. Puedo obtener el tiempo de reproducción actual del video usando la propiedad "currentPlaybackTime" que devuelve NSTimeInterval. Pero alguien puede ayudarme a almacenar todos los valores NSTimeInterval en un NSMutableDictionary. He tratado de las siguientes maneras:Cómo almacenar los valores de NSTimeInterval en un NSMutableArray?

-(void)onClickOfGood { 
    NSLog(@"The current playback time in good:%g",moviePlayerController.currentPlaybackTime); 
    currentPlaybackTime = moviePlayerController.currentPlaybackTime; 
    //NSArray *arrayContainsGoodClicks = [[NSArray alloc]initWithObjects:currentPlaybackTime, nil ]; 
    NSNumber *goodTimeIntervals = [NSNumber numberWithDouble:currentPlaybackTime]; 
    NSMutableArray *arrayContainsGoodClicks = [[NSMutableArray alloc]initWithObjects:goodTimeIntervals,nil ]; 
    NSLog(@"The total count of Array is: %i",[arrayContainsGoodClicks count]);} 

Pero cada vez después del clic del botón buena que estoy recibiendo la matriz cuenta como única 1. Por favor alguien puede arrojar una luz sobre donde estoy haciendo mal?

+3

¿Está creando una nueva matriz cada vez que se toca un botón? – meggar

+0

He rectificado el error .. –

Respuesta

3

Pero cada vez después del clic del botón bueno me estoy haciendo el recuento de matriz, ya que sólo 1.

Esto no es sorprendente, teniendo en cuenta que va a crear un nuevo NSMutableArray en la línea anterior.

Para solucionar este problema, es necesario realizar una NSMutableArray *arrayContainsGoodClicksinstancia de variable (También conocido como Ivar), inicializarlo a [NSMutableArray array] en su inicializador designado, y luego usar

[arrayContainsGoodClicks addObject:goodTimeIntervals]; 

para añadir objetos a la matriz.

En su lugar, si busca utilizar NSMutableDictionary, la estrategia sería idéntica, excepto que tendría que decidir sobre un objeto que le gustaría usar como claves únicas para su NSDictionary. También recuerde que NSMutableDictionary no está ordenado, por lo que es posible que tenga que encargarse de ordenar cada vez que muestre los artículos del diccionario a los usuarios.

+0

Muchas gracias ... De todos modos lo probé y sorprendentemente fue lo mismo sugerido. Se siente muy bien que estuve en el camino correcto .. [arrayContainsGoodClicks addObject: goodTimeIntervals]; NSLog (@ "El recuento total de Array es:% i", [conteo de arrayContainsGoodClicks]); esto hizo el truco .. –

1

Es necesario crear arrayContainsGoodClicks sólo una vez (en el método init por ejemplo) y luego añadir valor a este conjunto en su controlador de botón:

//.h 
NSMutableArray *arrayContainsGoodClicks; 

//.m - init 
arrayContainsGoodClicks = [NSMutableArray array]; 

//.m - button handler 
[arrayContainsGoodClicks addObject:goodTimeIntervals]; 
+0

Ya lo tengo. Gracias por la ayuda ... –

1

lo necesario para crear la matriz y almacenarlo como una Ivar.

@property (retain, nonatomic) NSMutableArray *clicksArray; 
... 
@synthesize clicksArray; 

En su método init crear la matriz como ..

self.clicksArray = [NSMutableArray array]; 

Y agregar el objeto a la matriz cada vez para que su -onClickOfGood habría convertido en algo así como ...

... 
[self.clicksArray addObject: goodTimeIntervals]; 
NSLog(@"The total count of Array is: %i",[self.clicksArray count]); 
+0

Ya ... lo gané ... Gracias por la ayuda ... –

Cuestiones relacionadas