Я изучаю Какао, и у меня есть проблема: я хотел бы связать содержимое NSMutableArray с NSTableView, с привязками. Я прочитал много документов о них, но мне не удается заставить их работать (в моей таблице ничего не отображается).
Вот факты:
Я создал простую модель под названием MTMTask
, которая содержит 2 свойства: priority
и text
:
MTMTask.h
@interface MTMTask : NSObject {
NSString *priority;
NSString *text;
}
@property(copy) NSString* priority;
@property(copy) NSString* text;
- (id) initWithPriority :(NSString*)newPriority andText:(NSString*)newText;
@end
MTMTask.m
#import "MTMTask.h"
@implementation MTMTask
@synthesize text, priority;
- (id) initWithPriority:(NSString *)newPriority andText:(NSString *)newText {
if (self = [super init]) {
priority = newPriority;
text = newText;
return self;
}
return nil;
}
@end
Тогда я создал MTMTaskController:
MTMTaskController.h
#import <Cocoa/Cocoa.h>
#import "MTMTask.h"
@interface MTMTaskController : NSObject {
NSMutableArray *_tasksList;
}
- (NSMutableArray *) tasksList;
@end
MTMTaskController.m
#import "MTMTaskController.h"
@implementation MTMTaskController
- (void) awakeFromNib
{
MTMTask *task1 = [[MTMTask alloc] initWithPriority:@"high" andText:@"Feed the hungry cat"];
MTMTask *task2 = [[MTMTask alloc] initWithPriority:@"low" andText:@"Visit my family"];
_tasksList = [[NSMutableArray alloc] initWithObjects:task1, task2, nil];
}
- (NSMutableArray*) tasksList
{
return _tasksList;
}
@end
И, наконец, я отредактировал файл MainMenu.xib: я добавил NSObject
и установил его класс на MTMTaskController
. Затем я добавил NSArrayController, называемый TasksListController
, с выходом содержимого, связанным с MTMTaskController.tasksList
. Я также установил его режим на Class
и имя класса MTMTask
. Я связал value
выход двух столбцов текста NSTableView
с TasksListController
текстом и приоритетом.
Но когда я запускаю программу, ну, на самом деле, это не успех: ничего не отображается в таблице.
У вас есть идея относительно моей проблемы? Я думаю, что что-то упустил, но я не могу понять, что.
Заранее спасибо!