2013-01-18 34 views
-1

更新我有一個NSMutableArray我初始化這樣的:NSMutableArray裏算不與陣列

- (id)init 
{ 
    self = [super init]; 
    if (self) { 
     playlist = [[NSMutableArray alloc] init]; 
    } 
    return self; 
} 

和我填充表吧。我有一個方法來計算項目的數組中的號碼:

- (NSUInteger)trackCount 
{ 
    tracks = [playlist count]; 
    NSLog(@"Number of tracks = %lx", tracks); 
    return tracks; 
} 

,我必須綁定到我的appDelegate與模型的關鍵路徑trackCount標籤,但在添加曲目標記不更新(也做日誌)。我究竟做錯了什麼??

它會更有意義和/或更容易得到表中的行數,因爲它們應該始終是相同的數字?

感謝

+0

你已經完成了'playlist = [[NSMutableArray alloc] init];'這個方法被調用之前的某個地方? –

+0

'-count'的作品,別的不是! –

+0

你可能會向我們展示更多的代碼。在哪裏設置元素,如音軌int,播放列表數組,您所指的標籤等? –

回答

2

你有沒有正確註冊playlistdependent key

你需要指定更改播放列表對象意味着trackCount將改變。

這是KVO compliance的全部內容。

採取更多的還是從鏈接到我給你的文檔究竟少。

添加到您的實現文件:

+ (NSSet *)keyPathsForValuesAffectingValueForKey:(NSString *)key { 

    NSSet *keyPaths = [super keyPathsForValuesAffectingValueForKey:key]; 

    if ([key isEqualToString:@"trackCount"]) { 
     NSArray *affectingKeys = @[@"playlist"]; 
     keyPaths = [keyPaths setByAddingObjectsFromArray:affectingKeys]; 
    } 
    return keyPaths; 
} 

keyPathsForValuesAffectingValueForKey:NSKeyValueObservingProtocol的一部分。

這段代碼做了什麼,它表示,任何對播放列表的更改都會觸發trackCount的更改。因此,當播放列表更改時,trackCount的任何觀察者都會收到可能的跟蹤計數更改通知。

+0

我沒有這樣做,我不完全確定如何實現它。任何幫助將不勝感激。 –

+0

這樣做了!謝謝! –

0

要麼你還沒有初始化數組playlist

playlist = [[NSMutableArray alloc] init]; 

,或者你不是要求trackCount方法。

NSUInteger someValue=[self trackCount]; 
+0

你可以給我一點正確的調用方法的指導嗎? –

+0

檢查我的更新 –