Документ «Без названия» не может быть сохранен как «Без названия» - PullRequest
1 голос
/ 24 января 2011

Я пытаюсь разработать приложение Mac на основе документа, используя это руководство Apple , и у меня возникают проблемы с сохранением файла (последний шаг).Ошибка, которую я получаю после того, как пытаюсь сохранить файл: «Не названный документ не может быть сохранен как» - новое имя файла я пытаюсь использовать - «

Я гуглили не нашел результатов по этой ошибке.Я перепроверил код, и все кажется довольно твердым в учебнике.Я задавался вопросом, есть ли у кого-нибудь какая-либо интуиция относительно того, что может быть не так здесь.

Код моего основного класса:

#import "MyDocument.h"

@implementation MyDocument

- (id)init
{
    self = [super init];
    if (self) {
        if (mString == nil) {
            mString = [[NSAttributedString alloc] initWithString:@""];
        }
    }
    return self;
}

- (NSAttributedString *) string { return [[mString retain] autorelease]; }

- (void) setString: (NSAttributedString *) newValue {
    if (mString != newValue) {
        if (mString) [mString release];
        mString = [newValue copy];
    }
}

- (void) textDidChange: (NSNotification *)notification {
    [self setString: [textView textStorage]];
}



- (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 @"MyDocument";
}

- (void)windowControllerDidLoadNib:(NSWindowController *) aController
{
    [super windowControllerDidLoadNib:aController];

    if ([self string] != nil) {
        [[textView textStorage] setAttributedString: [self string]];
    }
}

- (BOOL)readFromData:(NSData *)data ofType:(NSString *)typeName error:(NSError **)outError
{
    BOOL readSuccess = NO;
    NSAttributedString *fileContents = [[NSAttributedString alloc]
                                        initWithData:data options:NULL documentAttributes:NULL
                                        error:outError];
    if (fileContents) {
        readSuccess = YES;
        [self setString:fileContents];
        [fileContents release];
    }
    return readSuccess;
}

- (NSData *)dataOfType:(NSString *)typeName error:(NSError **)outError
{
    NSData *data;
    [self setString:[textView textStorage]];
    NSMutableDictionary *dict = [NSDictionary dictionaryWithObject:NSRTFTextDocumentType
                                                            forKey:NSDocumentTypeDocumentAttribute];
    [textView breakUndoCoalescing];
    data = [[self string] dataFromRange:NSMakeRange(0, [[self string] length])
                     documentAttributes:dict error:outError];
    return data;
}

Заголовочный файл:

#import <Cocoa/Cocoa.h>

@interface MyDocument : NSDocument
{
    IBOutlet NSTextView *textView;
    NSAttributedString *mString;
}

- (NSAttributedString *)string;
- (void) setString: (NSAttributedString *)value;

@end

Ответы [ 2 ]

0 голосов
/ 05 февраля 2011

Я перестроил проект с нуля, с одним исключением: я не выполнил шаг перетаскивания своего класса MyDocument в Владелец файла.Учебное пособие было написано для предыдущей версии XCode, хотя в нем говорится, что оно предназначено для версии 3.2 (или, может быть, так много произошло в этой версии и сейчас), но этот шаг не нужен.

0 голосов
/ 24 января 2011

В вашем методе -dataOfType:error:, когда вы назначаете что-то для data, вы уверены, что это не ноль?Возврат nil приведет к этой ошибке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...