2015-01-02 2 views
0

Я пытаюсь создать NSImage из CGImage, но продолжаю получать эти ошибки. Я следил за documentation , и я попытался использовать подсказки в xcode.CGImage to NSImage with Swift

Extra argument 'size' in call

import Cocoa 
import AppKit 
import CoreGraphics 

let image = NSImage(named:"image") 
if let image = image { 
    var imageRect:CGRect = CGRectMake(0, 0, image.size.width, image.size.height) 
    var imageRef = image.CGImageForProposedRect(&imageRect, context: nil, hints: nil) 

    var leftImageRect:CGRect = CGRectMake(0, 0, image.size.width/2.0, image.size.height) 
    var leftImageRef = image.CGImageForProposedRect(&imageRect, context: nil, hints: nil) 
    var leftImage = NSImage(CGImage:leftImageRef, size:NSZeroSize) 

    var rightImageRect:CGRect = CGRectMake(image.size.width/2.0, 0, image.size.width/2.0, image.size.height) 
    var rightImageRef = image.CGImageForProposedRect(&imageRect, context: nil, hints: nil) 
    var rightImage = NSImage(CGImage:rightImageRef) 
    var testImage = NSImage(CGImage:rightImageRef, flipped:) 

} 
+0

В следующий раз, пожалуйста, вставьте код. Образ кода никому не нужен. Помните, что ваш вопрос должен позволять другим воспроизводить вашу проблему. Если вы не можете тратить время на это, не задавайте никаких вопросов. – matt

+0

Извините, это был мой первый раз, когда я использовал Xcode и Swift, поэтому я подумал, что это просто простая вещь, которую я не замечал. Я хотел показать точную ошибку в Xcode, чтобы было более ясно. –

+0

Есть способ скопировать ошибку и вставить ее. Если вы не знаете этого, уверен, вы можете показать изображение ошибки. Но чтобы воспроизвести проблему и, таким образом, помочь вам, требуется код, который другие могут копировать и вставлять. Вы заставили меня ввести свой код вручную, прищурившись на картинке. Мне это не нравилось. :(Давайте будем внимательны ... – matt

ответ

3

Это происходит потому, что leftImageRef является не CGImage. Это Unmanaged<CGImage>?. Вам необходимо развернуть его и обеспечить управление памятью, прежде чем вы сможете работать с ним.

Если вы скажете leftImageRef!.takeUnretainedValue(), вы получите CGImage. (Принудительное разворачивание должно быть безопасным, но если вы обеспокоены тем, что этот NSImage, возможно, не сможет привлечь, вы можете, разумеется, развернуться более тщательно.)

+0

Вы можете легко решить это самостоятельно, поместив курсор в 'leftImageRef' на точка объявления и просмотр Quick Help. Это то, что я сделал, и именно так я узнал, что это «неуправляемый ?». Остальное - тривиальное следствие. Всегда проверяйте, какой у вас тип, он может не так, как вы думаете! – matt

+0

Спасибо! В первый раз, используя Xcode, я должен, вероятно, больше узнать о его функциях! :) –

Смежные вопросы