XCode Error:
GNU gdb 6.3.50-20050815 (Apple version gdb-1708) (Mon Aug 8 20:32:45 UTC 2011)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "x86_64-apple-darwin".tty /dev/ttys000
[Switching to process 2530 thread 0x0]
2011-11-12 18:29:29.857 RaiseMan[2530:707] Cannot create NSArray from object <Document: 0x100539a00> of class Document
2011-11-12 18:29:29.879 RaiseMan[2530:707] Cannot create NSArray from object <Document: 0x10015dda0> of class Document
2011-11-12 18:30:10.362 RaiseMan[2530:707] Cannot create NSArray from object <Document: 0x1001b0a90> of class Document
person.h:
#import <Foundation/Foundation.h>
@interface Person : NSObject
{
NSString *personName;
float expectedRaise;
}
@property (readwrite, copy) NSString *personName;
@property (readwrite) float expectedRaise;
@end
person.m:
#import "Person.h"
@implementation Person
- (id) init
{
self = [super init];
expectedRaise = 5.0;
personName = @"New Person";
return self;
}
- (void)dealloc
{
[personName release];
[super dealloc];
}
@synthesize personName;
@synthesize expectedRaise;
@end
document.h:
#import <Cocoa/Cocoa.h>
@interface Document : NSDocument
{
NSMutableArray *employees;
}
- (void)setEmployees:(NSMutableArray *)a;
@end
document.m
#import "Document.h"
@implementation Document
- (id)init
{
self = [super init];
//if (self) {
employees = [[NSMutableArray alloc] init];
//}
return self;
}
- (void)dealloc
{
[self setEmployees:nil];
[super dealloc];
}
-(void)setEmployees:(NSMutableArray *)a
{
//this is an unusual setter method we are goign to ad a lot of smarts in the next chapter
if (a == employees)
return;
[a retain];
[employees release];
employees = a;
}
- (NSString *)windowNibName
{
// Override returning the nib file name of the document
// If you need to use a subclass of NSWindowController or if your document supports multiple NSWindowControllers, you should remove this method and override -makeWindowControllers instead.
return @"Document";
}
- (void)windowControllerDidLoadNib:(NSWindowController *)aController
{
[super windowControllerDidLoadNib:aController];
// Add any code here that needs to be executed once the windowController has loaded the document's window.
}
- (NSData *)dataOfType:(NSString *)typeName error:(NSError **)outError
{
/*
Insert code here to write your document to data of the specified type. If outError != NULL, ensure that you create and set an appropriate error when returning nil.
You can also choose to override -fileWrapperOfType:error:, -writeToURL:ofType:error:, or -writeToURL:ofType:forSaveOperation:originalContentsURL:error: instead.
*/
NSException *exception = [NSException exceptionWithName:@"UnimplementedMethod" reason:[NSString stringWithFormat:@"%@ is unimplemented", NSStringFromSelector(_cmd)] userInfo:nil];
@throw exception;
return nil;
}
- (BOOL)readFromData:(NSData *)data ofType:(NSString *)typeName error:(NSError **)outError
{
/*
Insert code here to read your document from the given data of the specified type. If outError != NULL, ensure that you create and set an appropriate error when returning NO.
You can also choose to override -readFromFileWrapper:ofType:error: or -readFromURL:ofType:error: instead.
If you override either of these, you should also override -isEntireFileLoaded to return NO if the contents are lazily loaded.
*/
NSException *exception = [NSException exceptionWithName:@"UnimplementedMethod" reason:[NSString stringWithFormat:@"%@ is unimplemented", NSStringFromSelector(_cmd)] userInfo:nil];
@throw exception;
return YES;
}
+ (BOOL)autosavesInPlace
{
return YES;
}
@end
Full project code: http://sharesend.com/zyca7
Without downloading the zip file from ShareSend (please use a better host, such as Dropbox, or better yet, some form of version control), I can only guess that you have bound an array controller’s
contentArrayto your document but failed to specify an array property of that document.Telling the array controller to use the document itself as its content array will not work, because a document is not an array. Go into your nib, select the array controller, edit the
contentArraybinding, and specify the model key path for the array property you want to bind it to.