У меня есть класс, который хранит некоторые строки вместе с флагом BOOL, который установлен в YES, если одна из строк была обновлена.Редактирование NSTableView не меняется NSMutableArray
У меня есть NSTableView, который отображает строки в моем классе. Вид контролируется с помощью отдельного класса контроллера, а представление подается с помощью NSMutableArray.
Материал GUI, похоже, отлично работает с точки зрения отображения данных и позволяет редактировать ячейки в виде таблицы. Проблема, с которой я столкнулась, - это изменения, которые не изменяют объекты, хранящиеся в NSMutableArray. У меня есть код отладки, чтобы распечатать строки при закрытии приложения, и ни одно из изменений, внесенных в графический интерфейс, не появилось в объектах на данный момент. Установка точки останова, в которой эти значения изменены, показывает мне, что объекты действительно изменены, но эти изменения, похоже, теряются. Как я могу получить какие-либо изменения, которые я делаю в представлении, для сохранения в объекте, хранящемся в NSMutableArray, поддерживающем NSTableView?
Вот как я кодирования:
// 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;
метод из моего контроллера класса
// 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. Кроме того, setChanged: YES также теряется, когда я печатаю содержимое NSMutableArray при закрытии приложения.
У вас есть код инициализации, который запускается после внесения изменений? Любой шанс, что вы могли бы поставить точку останова? – Monolo
@Monolo -> Я считаю, что вы отправили меня по правильному пути. Я расследую и буду отчитываться. –
@Monolo -> Оказывается, ваш вопрос был именно тем, что мне нужно было услышать. Я дважды запускал инициализацию и, таким образом, возвращал массив обратно в базу данных. Цените помощь. Я дам вам признанный знак ответа, если вы ответите на эту проблему. –