Objective c NSTableView编辑不更改NSMutableArray

Objective c NSTableView编辑不更改NSMutableArray,objective-c,xcode,nsmutablearray,nstableview,Objective C,Xcode,Nsmutablearray,Nstableview,我有一个类,它存储了一些字符串以及一个BOOL标志,如果其中一个字符串被更新,则该标志设置为YES 我有一个NSTableView,它显示类中的字符串。视图通过单独的控制器类进行控制,视图由NSMutableArray提供 GUI在显示数据和允许我编辑表视图中的单元格方面似乎工作得很好。我遇到的问题是编辑不会更改存储在NSMutableArray中的对象。当我关闭应用程序时,我有一些调试代码来打印字符串,此时在GUI中所做的任何更改都不会显示在对象中。在这些值发生更改的地方设置一个断点,这表明对

我有一个类,它存储了一些字符串以及一个BOOL标志,如果其中一个字符串被更新,则该标志设置为YES

我有一个NSTableView,它显示类中的字符串。视图通过单独的控制器类进行控制,视图由NSMutableArray提供

GUI在显示数据和允许我编辑表视图中的单元格方面似乎工作得很好。我遇到的问题是编辑不会更改存储在NSMutableArray中的对象。当我关闭应用程序时,我有一些调试代码来打印字符串,此时在GUI中所做的任何更改都不会显示在对象中。在这些值发生更改的地方设置一个断点,这表明对象确实发生了更改,但这些更改似乎丢失了。如何使我在视图中所做的任何更改保持在支持NSTableView的NSMutableArray中存储的对象中

以下是我的编码方式:

// my class .h file

@interface Snip : NSObject <NSMutableCopying>

@property (assign) int64_t  id_num;
@property (assign) BOOL     changed;
@property NSMutableString   *name;
@property NSMutableString   *text;
@property (copy) NSString   *language;


// my class .m file

import "Snip.h"

@implementation Snip

@synthesize id_num;
@synthesize name;
@synthesize text;
@synthesize changed;
@synthesize language;

最后一条NSLog语句显示了我在GUI中所做的更改。此外,当我在关闭应用程序时打印NSMutableArray内容时,setChanged:YES也会丢失。

这种行为通常是由于在用户更改数据后的某个时间点再次初始化数据造成的


您可以通过在初始化代码中设置断点(或
NSLog
语句)来发现此问题。

您是否有任何在更改后运行的初始化代码?你能在那里设置一个断点吗?@Monolo->我相信你让我走上了正确的道路。我正在调查并将向您汇报。@Monolo->结果发现您的问题正是我需要听到的。我运行了两次初始化,从而将数组重置回数据库的状态。谢谢你的帮助。如果你能回答这个问题,我会给你一个被接受的答案复选标记。
// edit table values
-(void)tableView:(NSTableView *)tableView setObjectValue:(id)object forTableColumn(NSTableColumn *)tableColumn row:(NSInteger)row
{
  Snip *sn = [snippet_list objectAtIndex:row];

  [sn setChanged:YES];

  [sn setValue:object forKey:[tableColumn identifier]];

  NSLog(@"Change: %@",sn.name);
}