Я пытаюсь перехватить метод addObject NSArrayController (thingsController) с помощью следующего метода доступа.
- (void)insertObject:(Thing *)thing
inThingsAtIndex:(NSUInteger)index;
У меня есть два класса: Thing и MyDocument.У вещи есть одно свойство: имя.MyDocument имеет NSMutableArray, называемый вещи, и NSArrayController, называемый thingsController.В NIB для владельца файла установлено значение MyDocument, а у меня массив содержимого NSArrayController привязан к владельцу файла, а путь модели - к вещам.NSArrayController также имеет режим, установленный на Class, Class Name установлен на Thing, и у него есть один ключ с именем name.В MyDocument у меня есть метод с именем createThing, который сначала отправляет thingsController newObject, а затем отправляет его addObject.Если я устанавливаю точку останова в методе init в Thing, он вызывается, когда thingsController отправляется newObject.Тем не менее, когда thingController отправляется addObject, мой метод доступа insertObject: (Thing *) thing inThingsAtIndex: (NSUInteger) index не вызывается.
Я прочитал документацию Apple по методам Access Keying Value Coding и я думаю,Я согласен, однако, я должен что-то упустить.
Любая помощь будет принята с благодарностью.
Код ниже ...
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];
}