我想攔截一個NSArrayController(thingsController)addObject方法與以下訪問器方法。爲什麼NSArrayController不通過綁定調用訪問器方法?
- (void)insertObject:(Thing *)thing
inThingsAtIndex:(NSUInteger)index;
我有兩個類:Thing和MyDocument。事物有一個屬性:名稱。 MyDocument有一個名爲things的NSMutableArray和一個名爲thingsController的NSArrayController。在NIB中,文件的所有者被設置爲MyDocument,並且我將NSArrayController的內容數組綁定到文件所有者,並將模型路徑設置爲事物。 NSArrayController也有模式設置爲類,類名設置爲Thing,它有一個名爲name的鍵。在MyDocument中,我有一個名爲createThing的方法,它首先發送thingsController newObject,然後發送addObject。如果我在Thing的init方法中設置斷點,則在thingsController發送newObject時會調用它。但是,當thingsController發送addObject時,我的訪問器方法insertObject:(Thing *)在ThingsAtIndex:(NSUInteger)索引中沒有調用。
我已閱讀蘋果公司關於鍵值編碼訪問器方法的文檔,我認爲我很合規,但是我必須缺少一些東西。
任何幫助將不勝感激。下面
代碼...
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];
}