2013-05-21 3 views
1

문자열 중 하나가 업데이트 된 경우 YES로 설정된 BOOL 플래그와 함께 일부 문자열을 저장하는 클래스가 있습니다.NSTableView가 NSMutableArray를 변경하지 않습니다.

클래스에 문자열을 표시하는 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에서 변경 한을 표시하는

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

에서 : 여기

내가 코딩하고 방법이다. 또한 setChanged : YES는 응용 프로그램을 닫을 때 NSMutableArray 내용을 인쇄 할 때 손실됩니다.

+0

변경 한 후에 실행되는 초기화 코드가 있습니까? 거기에 중단 점을 넣을 수있는 기회가 있습니까? – Monolo

+0

@ Monolo -> 나는 네가 나를 올바른 방향으로 보내 었다고 믿는다. 조사 중이며보고 할 것입니다. –

+0

@ Monolo -> 귀하의 질문은 내가 듣고 싶었던 것입니다. 나는 초기화를 두 번 실행 했으므로 어레이가 데이터베이스의 내용으로 다시 설정됩니다. 도움을 감사하십시오. 이 문제를 해결하는 답을 작성하면 승인 된 답을 표시합니다. –

답변

0

이 동작은 사용자가 변경 한 후 데이터가 다시 초기화되는 경우가 많습니다.

초기화 코드에서 중단 점 (또는 NSLog 문)을 설정하여이 문제를 잡을 수 있습니다.

관련 문제