Я пытаюсь перехватить метод addObject NSArrayController (thingsController) с помощью следующего метода доступа.
- (void)insertObject:(Thing *)thing
inThingsAtIndex:(NSUInteger)index;
У меня два класса: Thing и MyDocument. У вещи есть одно свойство: имя. MyDocument имеет NSMutableArray, называемый вещами, и NSArrayController, называемый вещами. В NIB для владельца файла установлено значение MyDocument, и у меня есть массив содержимого NSArrayController, привязанный к владельцу файла, а путь модели установлен для вещей. NSArrayController также имеет режим, установленный на Class, Class Name, установленный на Thing, и у него есть один ключ с именем name. В MyDocument у меня есть метод createThing, который сначала отправляет somethingController newObject, а затем отправляет ему addObject. Если я устанавливаю точку останова в методе инициализации в Thing, она вызывается, когда thingsController отправляется newObject. Однако, когда thingsController отправляется addObject, мой метод доступа insertObject: (Thing *) thing inThingsAtIndex: (NSUInteger) index не вызывается.
Я прочитал документацию Apple по методам доступа к кодированию ключевого значения и считаю, что я соответствую требованиям, однако, должно быть, мне что-то не хватает.
Любая помощь будет принята с благодарностью.
Код ниже ...
Thing.h
#import <Cocoa/Cocoa.h>
@interface Thing : NSObject {
NSString *name;
}
@property (readwrite, copy) NSString *name;
@end
Thing.m
#import "Thing.h"
@implementation Thing
@synthesize name;
-(id) init
{
[super init];
name = @"Default";
return self;
}
@end
MyDocument.h
#import <Cocoa/Cocoa.h>
@class Thing;
@interface MyDocument : NSDocument
{
NSMutableArray *things;
IBOutlet NSArrayController *thingsController;
IBOutlet NSTableView *tableView;
}
- (IBAction)createThing:(id)sender;
- (void)insertObject:(Thing *)thing
inThingsAtIndex:(NSUInteger)index;
- (void)removeObjectFromThingsAtIndex:(NSUInteger)idx;
@end
MyDocument.m
- (IBAction)createThing:(id)sender
{
//Create the object
Thing *t = [thingsController newObject];
//Add it to the content array of 'thingsController'
[thingsController addObject:t];
NSLog(@"The new content of array is%@",things);
[t release];
}