Objective c NSMutableArray计数未使用数组更新

Objective c NSMutableArray计数未使用数组更新,objective-c,binding,xcode4,Objective C,Binding,Xcode4,我有一个NSMutableArray,初始化如下: - (id)init { self = [super init]; if (self) { playlist = [[NSMutableArray alloc] init]; } return self; } 我正在用它填充一个表。我有一种计算数组中项目数的方法: - (NSUInteger)trackCount { tracks = [playlist count]; NSLo

我有一个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
,但是标签在添加轨迹时不会更新(日志也不会更新)。我做错了什么

由于表中的行数应该总是相同的,所以获取表中的行数是否更有意义和/或更容易


谢谢

或者您尚未初始化阵列
播放列表

playlist = [[NSMutableArray alloc] init];
或者您没有调用
trackCount
方法

NSUInteger someValue=[self trackCount];

您是否已将播放列表正确注册为

您需要指定播放列表对象的更改意味着
trackCount
将更改

这都是我的一部分

示例

从我给你的文档的链接中或多或少地得到了准确的信息

将此添加到您的实现文件:

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

    NSSet *keyPaths = [super keyPathsForValuesAffectingValueForKey:key];

    if ([key isEqualToString:@"trackCount"]) {
        NSArray *affectingKeys = @[@"playlist"];
        keyPaths = [keyPaths setByAddingObjectsFromArray:affectingKeys];
    }
    return keyPaths;
}
keypathsforvaluesafectingvalueforkey:
nskeypalueobservingprotocol
的一部分


这段代码的作用是,对播放列表的任何更改都会触发trackCount的更改。因此,当播放列表发生更改时,trackCount的任何观察者都会收到trackCount可能发生更改的通知。

您是否完成了播放列表的更改在调用此方法之前的某个地方?
-count
起作用,而其他方法则不起作用!你能再给我们看一些代码吗。你在哪里设置元素,比如曲目int、播放列表数组、你所指的标签等等?以及
曲目的类型是什么
是整数还是其他什么?哇,这是一个快速下降的投票。。。我在标题中将
跟踪
声明为
整数
。和
init
方法中的
playlist=[[NSMutableArray alloc]init]
。我在interface builder中设置了标签。你能给我一些正确调用方法的指导吗?我没有这样做,我也不完全确定如何实现它。任何帮助都将不胜感激。