2010-12-15 15 views
5

Ben AppKit ve NSDocument ile oynuyorum ve buNSURL → NSImage → NSImageView

Sadece bu yazdım ?: neden çalışmadığını bilmiyorum ve görüntü nil değil ama asla herhangi bir görüntü yükler, onun boyutudur her zaman sıfır. Dosyaları dokümanımda okumak için uygulamak zorunda olduğum doğru yöntem bu mu? Veriyi (NSData) değil, yola ihtiyacım var çünkü diğer dosyaları okumak için diğer kütüphaneyi kullanmayı planlıyorum.

Şimdi PNG'leri, JPG'leri okumaya çalışıyorum, işe yaramadı. (Peşin

- (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; 
} 

Teşekkür

+2

+1 kullanımı için → 's;) – Jakub

cevap

6

ImageView ELVES dosyasından yüklenmektedir ise, ayarlanmış olmayacaktır zaman readFromURL: OfType: Bunun yerine, görüntüyü yüklemeli ve bir örnek değişkeninde saklamalı, daha sonra windowControllerDidLoadNib: yöntemindeki imageView öğesine eklemelisiniz.Ayrıca, her seferinde bir hata döndürüyorsunuz. bir şeyler ters gidiyor

- (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; 
} 

Sadece bir NSImage * görüntüsü eklediğinizden emin olun; başlık değişkenine örnek değişkeni.

+1

Harika cevap. "UnimpErr" yer tutucu hatası, geliştiricinin henüz bu yöntemi dışlamadığı durumda gerçekten var olan "Uyarlanmamış hata" olarak adlandırılır. Başarısız olan bir resmin yüklenmesi durumunda, muhtemelen Cocoa'nın NS FileCorrupt kodlarından birini kullanması daha mantıklı olacaktır (özür dilerim, kesin enum isminden emin değil). – NSGod

+0

teşekkürler çalıştı;) – nacho4d

6

bu şekilde yapın:.

NSImage *image = [[NSImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:url]]]; 
+1

Mac OS, AppKit. Dolayısıyla UIImage Matt yok. – nacho4d

+0

düzenlenmiş ve test edilmiştir. Bu şekilde çalışacak. –