1

クラスのプロトコルを実装しました。サブクラスNSCodingで次のコードを使用して、NSDocument保存と読み込みを行います。

- (NSData *)dataOfType:(NSString *)typeName error:(NSError **)outError {
[[record window] endEditingFor:nil];
return [NSKeyedArchiver archivedDataWithRootObject:self];

}

- (BOOL)readFromData:(NSData *)data ofType:(NSString *)typeName error:(NSError **)outError{
@try {
    NSLog(@"Loading...");
    self = [NSKeyedUnarchiver unarchiveObjectWithData:data];
}
@catch (NSException *exception) {
    if (outError) {
        NSDictionary *d = [NSDictionary dictionaryWithObject:@"The data is corrupted" forKey:NSLocalizedFailureReasonErrorKey];
        *outError = [NSError errorWithDomain:NSOSStatusErrorDomain code:unimpErr userInfo:d];
    }
}
NSLog(@"whiteMoves count: %ld",[whiteMoves count]);

}

それはすべてうまくいっているようです。ファイルを保存できます。ファイルを開いてコードをステップ実行すると、すべてがアーカイブ解除され、正常にデコードされます。ただし、「ロード イベント」が完了すると、アプリケーションは常に「ドキュメント "xxx.xxx" をロードできませんでした」というエラー ウィンドウを表示します。このエラーがどこからトリガーされているか、またはそれに関するドキュメントが見つかりません。

それがどこから来たのか、またはどこに文書化されているのか知っている人はいますか?

ありがとう

リー

4

1 に答える 1

1

あなたは戻ってきていないようYESです:NOreadFromData

- (BOOL)readFromData:(NSData *)data
              ofType:(NSString *)typeName
               error:(NSError **)outError
{
    BOOL retval = YES;
    @try
    {
        NSLog(@"Loading...");
        self = [NSKeyedUnarchiver unarchiveObjectWithData:data];
        NSLog(@"whiteMoves count: %ld",[whiteMoves count]);
    }
    @catch (NSException *exception)
    {
        if (outError != nil)
        {
            NSDictionary *d = [NSDictionary dictionaryWithObject:@"The data is corrupted" forKey:NSLocalizedFailureReasonErrorKey];
            *outError = [NSError errorWithDomain:NSOSStatusErrorDomain code:unimpErr userInfo:d];
        }
        retval = NO;
    }

    return retval;
}

これはチェスに関連しているように見えます。何を書いているのか聞いてもいいですか?

于 2012-06-28T14:12:07.420 に答える