7

AppKit と NSDocument で遊んでいますが、なぜこれが機能しないのですか?:

これを書いたばかりで、画像はnilではありませんが、画像をロードすることはなく、サイズは常にゼロです。これは、ファイルをドキュメントに読み込むために実装する必要がある正しい方法ですか? 他のライブラリを使用して他のファイルを読み取る予定であるため、データ (NSData) ではなくパスが必要です。

今、PNG、JPGを読み込もうとしていますが、どれもうまくいきませんでした。;(

- (BOOL) readFromURL:(NSURL *)url ofType:(NSString *)typeName error:(NSError **)outError{

    NSImage *image = nil;
    image = [[NSImage alloc] initWithContentsOfURL:url];

    [imageView setImage:image];
    [image release];

    if ( outError != NULL ) {
        *outError = [NSError errorWithDomain:NSOSStatusErrorDomain code:unimpErr userInfo:NULL];
    }
    return YES;
}

前もって感謝します。

4

2 に答える 2

8

このようにしてください:

NSImage *image = [[NSImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:url]]];
于 2010-12-15T19:05:33.240 に答える
6

imageView が NIB ファイルからロードされている場合、readFromURL:ofType:error: が呼び出されたときに設定されていません。代わりに、画像をロードしてインスタンス変数に保存し、それを windowControllerDidLoadNib: メソッドで imageView に追加する必要があります。また、何か問題が発生した場合にのみエラーを返す必要がありますが、毎回エラーを返しています。

- (void)windowControllerDidLoadNib:(NSWindowController *)windowController {
    [imageView setImage:image];
    [image release];
    image = nil;
}
- (BOOL)readFromURL:(NSURL *)url ofType:(NSString *)typeName error:(NSError **)outError {
    image = [[NSImage alloc] initWithContentsOfURL:url];
    if(!image) {
        if(outError) *outError = [NSError errorWithDomain:NSOSStatusErrorDomain code:unimpErr userInfo:NULL];
        return NO;
    }
    return YES;
}

必ず NSImage *image; を追加してください。インスタンス変数をヘッダー ファイルに追加します。

于 2010-12-15T21:23:44.440 に答える