2013-05-21 140 views
1

我有一个类,存储一些字符串以及如果其中一个字符串已更新BOOL标志设置为YES。NSTableView编辑不改变NSMutableArray

我有一个NSTableView,显示我的班级中的字符串。该视图是通过单独的控制器类来控制的,并且该视图由一个NSMutableArray提供。

GUI的东西似乎在显示数据方面工作正常,并允许我编辑表视图中的单元格。我遇到的问题是编辑不会更改存储在NSMutableArray中的对象。当我关闭应用程序时,我有一些调试代码可以打印出字符串,并且此时在GUI中没有任何更改显示在对象中。设置一个中断点,这些值被更改显示我的对象确实发生了变化,但这些更改似乎会丢失。我如何获得我在视图中做出的任何更改以保存存储在支持NSTableView的NSMutableArray中的对象?

这里是我很编码:从我的控制器类

// 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); 
} 

这最后的NSLog语句显示我在GUI中所做的更改

// 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; 

方法。此外,setChanged:YES在关闭应用程序时打印NSMutableArray内容时也会丢失。

+0

您是否有任何初始化代码恰好在更改后运行?你有可能在那里放置一个断点吗? – Monolo

+0

@Monolo - >我相信你已经把我送到了正确的道路上。我正在调查并将回报。 –

+0

@Monolo - >原来你的问题正是我需要听到的。我正在运行初始化两次,从而将数组重置为数据库的内容。感谢帮助。如果您编制解决此问题的答案,我会给您接受的答案复选标记。 –

回答

0

此行为通常是由于数据在用户更改后的某个时刻再次被初始化。

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