0

私は、PDFファイルで画像を保存およびロードできる単純なドキュメントベースのココアアプリケーションを作成しようとしています。

保存部分には、私が使用しています

- (NSData *)dataOfType:(NSString *)typeName error:(NSError **)outError
{
    return [imageView dataWithPDFInsideRect:[imageView bounds]];
}

そしてこれはうまくいき、画像をPDFファイルに保存することができます。

負荷部分は使用しています

- (BOOL)readFromData:(NSData *)data ofType:(NSString *)typeName error:(NSError **)outError
{
    NSData *dataFromFile = [data retain];
    NSImage *image = [[NSImage alloc] initWithData:dataFromFile];
    NSLog(@"Load image as: %@", image);
    // Do something about the image
    if (outError != NULL) {
        NSLog(@"Error when loading data ...");
        *outError = [NSError errorWithDomain:NSOSStatusErrorDomain code:unimpErr userInfo:NULL];
        return NO;
    }
    return YES;
}

これは常に失敗しますが、NSLogは画像がNULLではないことを出力します。

Load image as: NSImage 0x16ead890 Size={1023, 601} Reps=(NSPDFImageRep 0x16e97480 Size={1023, 601} ColorSpace=NSCalibrateRGBColorSpace BPS=0 Pixels=1023x601 Alpha=NO)

Error when loading data ...

ここでoutError!=NULLになるreadFromDataでどのような問題が発生するのかよくわかりません。

4

3 に答える 3

1

画像は正常に作成されています。

エラーパラメータがどのように機能するかを完全には理解していません。NSDataインスタンスからのイメージの作成に失敗した 場合-readFromData:ofType:error:に使用できるように、メソッドにはポインターへのポインターが渡されます。

NSErrorインスタンスの作成方法と使用方法を理解するには、NSErrorに関するドキュメントを読む必要があります。

于 2009-12-26T03:44:10.070 に答える
0

-readFromData:ofType:error:を呼び出しているものからoutErrorを渡します。さらに、outErrorはポインタへのポインタです。チェックする必要があるのは次のとおりです。

if (outError != nil && *outError != nil) {...
于 2009-12-26T03:33:04.067 に答える
0

ドキュメントの読み取りエラーが発生した場合に設定する outError があります。コードが失敗したかどうかはわかりません。これは、何が問題だったかを発信者に伝える方法です。[NSImage initWithData:] 失敗すると nil が返されるため、次のように変更する必要があります。

if (outError != NULL) {

に:

if (image == NULL) {
于 2009-12-26T06:40:47.497 に答える