2012-04-09 6 views
5

Ich habe eine Anforderung, wo ich ein Video habe, das mit MPMediaPlayerController abgespielt wird. Zusammen mit dem Video habe ich zwei Buttons, wo ich beim Klick auf die Schaltfläche die aktuelle Wiedergabezeit erfassen und alle relevanten Klicks einzeln speichern muss. Ich kann die aktuelle Wiedergabezeit des Videos mit der Eigenschaft "currentPlaybackTime" ermitteln, die NSTimeInterval zurückgibt. Aber kann mir jemand helfen, wie man alle NSTimeInterval Werte in einem NSMutableDictionary speichert. Ich habe die folgende Art und Weise versucht:Wie NSTimeInterval-Werte in einem NSMutableArray gespeichert werden?

-(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]);} 

Aber jedes Mal nach dem Klick auf eine gute Taste i als nur das Array zählen bin immer 1. Kann jemand bitte auf ein Licht werfen, wo ich falsch gehe?

+3

Erstellen Sie jedes Mal ein neues Array, wenn eine Schaltfläche angetippt wird? – meggar

+0

Ich habe den Fehler berichtigt. –

Antwort

3

Aber jedes Mal nach dem Klick auf eine gute Taste Ich erhalte die Array als nur 1.

Diese zählen ist nicht überraschend, wenn man bedenkt, dass Sie eine brandneue NSMutableArray in der vorhergehenden Zeile erstellen.

Um dies zu beheben, müssen Sie NSMutableArray *arrayContainsGoodClicks eine Instanzvariable (AKA Ivar), initialisieren es [NSMutableArray array] in Ihrer bestimmten Initialisierung zu machen, und dann

[arrayContainsGoodClicks addObject:goodTimeIntervals]; 

verwenden, um Objekte zu dem Array hinzufügen. Wenn Sie stattdessen NSMutableDictionary verwenden möchten, ist die Strategie identisch, außer dass Sie sich für ein Objekt entscheiden müssen, das Sie als eindeutigen Schlüssel für Ihre NSDictionary verwenden möchten. Denken Sie auch daran, dass NSMutableDictionary nicht bestellt ist. Sie müssen daher jedes Mal, wenn Sie Ihre Wörterbuchelemente den Benutzern anzeigen, nachsortieren.

+0

Vielen Dank .. Irgendwie habe ich mich selbst ausprobiert und es war überraschend das gleiche vorgeschlagen. Fühlt sich großartig an, dass ich auf der richtigen Spur war .. [arrayContainsGoodClicks addObject: goodTimeIntervals]; NSLog (@ "Die Gesamtzahl von Array ist:% i", [arrayContainsGoodClicks zählen]); dieses Ding hat den Trick gemacht .. –

1

Sie müssen arrayContainsGoodClicks nur einmal erstellen (in init-Methode zum Beispiel) und dann Wert in Ihrem Tastenhandler zu diesem Array hinzufügen:

//.h 
NSMutableArray *arrayContainsGoodClicks; 

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

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

Du hast es. Danke für die Hilfe ... –

1

Sie benötigen Array erstellen und sie als Ivar speichern.

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

Jetzt in Ihrer -init Methode das Array wie ..

self.clicksArray = [NSMutableArray array]; 

Und das Objekt zu dem Array hinzufügen jedes Mal so würde Ihre -onClickOfGood so etwas wie werden ...

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

Ya ya ..got it..Danke für die Hilfe .. –