Objective c 使用NSTableView进行日志记录?

Objective c 使用NSTableView进行日志记录?,objective-c,xcode,macos,nstableview,Objective C,Xcode,Macos,Nstableview,我一直在尝试如何使用表视图,如果我诚实的话,我有点被卡住了。我想使用行数有限的tableview(比如最多50行)。它以空开头,有0行。然后我想做一些类似的事情: [self logMessage:@"Waiting for response"]; 这将在底部插入包含上述文本的新行。如果我再次调用此伪函数: [self logMessage:@"Server response received"]; 它应该在前一行的下方插入另一个新行,并确保其可见。一旦达到上述50条的限制,并且插入了一条新

我一直在尝试如何使用表视图,如果我诚实的话,我有点被卡住了。我想使用行数有限的tableview(比如最多50行)。它以空开头,有0行。然后我想做一些类似的事情:

[self logMessage:@"Waiting for response"];
这将在底部插入包含上述文本的新行。如果我再次调用此伪函数:

[self logMessage:@"Server response received"];
它应该在前一行的下方插入另一个新行,并确保其可见。一旦达到上述50条的限制,并且插入了一条新消息,我希望删除最旧的消息。所有这些都是可滚动的,默认情况下最新的一个是可见的

我是不是在考虑做正确的事情?最后,我希望把它放在主窗口下面的一个漂亮的小抽屉里,如果需要的话,我可以从主菜单切换。但正如我所说的,我无法正确地使用表视图,它似乎不像其他对象那样直截了当


任何示例代码都将不胜感激

由于日志查看器是
UITableView
的只读应用程序,因此,一旦您了解了基本知识,就可以直接使用日志查看器了。回想一下,表视图依靠其数据模型为其提供需要显示的正确信息

“日志的最后五十行”的数据模型可以像
NSMutableArray
一样简单:使用
insertObject:atIndex:
添加行,使用
removelasobject
删除“溢出”行,如下所示:

NSMutableArray *logLines = [NSMutableArray array]; // <<== this goes into the init method

-(void) addLogLine:(NSString*)line {
    [logLines insertObject:line atIndex:0];
    while (logLines.count > 50) {
        [logLines removeLastObject];
    }
}

NSMutableArray*logLines=[NSMutableArray];// 由于日志查看器是
UITableView
的只读应用程序,因此,一旦了解了基本知识,就可以直接使用日志查看器了。回想一下,表视图依靠其数据模型为其提供需要显示的正确信息

“日志的最后五十行”的数据模型可以像
NSMutableArray
一样简单:使用
insertObject:atIndex:
添加行,使用
removelasobject
删除“溢出”行,如下所示:

NSMutableArray *logLines = [NSMutableArray array]; // <<== this goes into the init method

-(void) addLogLine:(NSString*)line {
    [logLines insertObject:line atIndex:0];
    while (logLines.count > 50) {
        [logLines removeLastObject];
    }
}

NSMutableArray*logLines=[NSMutableArray];//看看,这不是一个iOS项目,而是一个Mac上的项目。不过,谢谢你的意见,它应该是相当可转让的。我试试看。你的想法应该行得通,但我似乎无法根据NSMutableArray的内容更新NSTableView。请看:@loco Oops,我没有注意到
NS
前缀,以为这是一个ios项目。不过基本的想法应该是一样的。这不是一个iOS项目,而是一个Mac上的项目。不过,谢谢你的意见,它应该是相当可转让的。我试试看。你的想法应该行得通,但我似乎无法根据NSMutableArray的内容更新NSTableView。请看:@loco Oops,我没有注意到
NS
前缀,以为这是一个ios项目。不过,基本想法应该是一样的。