2016-08-15 2 views
4

Я перехожу от объектного-к к быстрому, и все, что я пытаюсь сделать, это просто создать экземпляр класса, чтобы я мог получить доступ к свойству в указанном классе.Невозможно вызвать инициализатор для типа без аргументов - Swift

var myClassInstance = MyClass() 

print("length is \(myClassInstance.variableOne)") 

что-то в этом плане, но я получаю сообщение об ошибке Cannot invoke initializer for type 'MyClass' with no arguments

+0

ли ваши '' MyClass' в init' метод? – dasblinkenlight

+0

@dasblinkenlight У него есть метод init 'init (origin: CGPoint) {...}' – ioskaveen

+1

Вы не снабжаете его 'CGPoint', следовательно, ваша ошибка. Поставьте «CGPoint» или напишите инициализатор, который не принимает никаких аргументов. –

ответ

6

Вы можете создать класс, как показано ниже:

class MyClass{ 
var variableOne:CGPoint 

    init(variableOne: CGPoint) { 
     self.variableOne = variableOne 
    } 

    convenience init() { 
     self.init(variableOne: CGPoint(x: 0, y: 0)) 
    } 
} 


var myClassInstance = MyClass() 
print("Default length is \(myClassInstance.variableOne)") 

var myClassInstance2 = MyClass(variableOne: CGPoint(x: 10, y: 10)) 
print("length is \(myClassInstance2.variableOne)") 
+0

Я добавил 'init (variableOne: CGPoint) {self.variableOne = length}' в MyClass, но теперь получил новую ошибку: «Super.init не вызывается на всех путях перед возвратом из инициализатора» – ioskaveen

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