2014-10-25 3 views
0

У меня возникло множество проблем с Swift при подклассификации чего-либо в Cocoa, поэтому я решил создать MVCE и разместить его здесь. Попробуйте сами.Swift дает всевозможные ошибки

Я создал простое приложение какао в Xcode со следующими параметрами:

Язык: Swift
Используйте о Storyboard: Нет

Затем я создал подкласс NSView с именем Rectangle:

import Foundation 
import Cocoa 

class Rectangle: NSView {    //1 
    init(frame: NSRect) {    //2 
     super.init(frame: frame)   //3 
    }         //4 
}          //5 

Странно, что некоторые ошибки приходят и уходят во время ввода. Когда я компилирую проекта, я получаю следующие ошибки:

// 2: Перекрытие декларация требует ставиться ключевое слово '
// 5: «требуется» Initializer' инициализации (кодировщиков :) должен быть обеспечен по подклассу 'NSView'

Как только я начинаю печатать, я получаю следующие дополнительные ошибки:

// 1: Использование необъявленной типа 'NSView'
// 3: ' супер "не могут быть r eferenced в корневом классе

Если я снова скомпилирую, две предыдущие ошибки исчезнут.

Любая идея, что я делаю неправильно? Как я уже сказал, попробуйте сами. Может быть, это ошибка.

ответ

0

Не похоже, что вы делаете что-то неправильно, кроме забывания ключевого слова override и забываете реализовать метод initWithCoder.

Помните, что при вводе кода код находится в неустойчивом состоянии. Когда вы начнете писать строку кода, она будет заполнена ошибками, пока вы не закончите ее писать.

+0

Требуется ли 'initWithCoder'? Ошибки, возникающие при вводе текста, остаются там после того, как я закончил набирать текст (например, меняя «NSView» на «NSViewController»). –

+0

Если вы посмотрите на определение метода для initWithCoder в базовом классе, вы увидите требуемое ключевое слово. Так что да, это необходимо. Ошибки будут сохраняться до тех пор, пока компилятор не завершит другой проход, попробуйте нажать команду -b. Конечно, вы можете создавать больше ошибок, это тоже возможно. –

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