Почему NSArrayController не вызывает методы доступа через привязки?

Я пытаюсь перехватить метод 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];
}

person user376436    schedule 25.06.2010    source источник


Ответы (1)


Извинения. Я внес одно изменение, и теперь оно работает. Я думал, что пробовал это в прошлом, и это не сработало ...

я добавил

@property (readwrite, copy) NSMutableArray *things;

в MyDocument.h

и

@synthesize things;

в MyDocument.m.

Кажется, работает.

С Уважением.

person user376436    schedule 25.06.2010