2015-06-22 2 views
1

В настоящее время у меня есть две структуры и класс в моем примере кода. Одна структура для Тигра, одна для Воздушного шара, а для Лев. Каждый ниже:No Autocomplete Class/Struct в Swift

struct Tiger { 
    var name = "" 
    var age = 0 
    var breed = "" 
    var image = UIImage(named: "") 
    func chuff() { 
     println("\(name): Chuff Chuff") 
    } 
    func chuffNumberOfTimes(numberOfTimes:Int) { 
     for (var i = 0; i < numberOfTimes; i++) { 
      self.chuff() 
     } 
    } 
    func ageInTigerYearsFromAge(regularAge:Int) -> Int { 
     return regularAge * 3 
    } 
    func randomFact() -> String { 
     let randomFactNumber = Int(arc4random_uniform(UInt32(3))) 
     var randomFact:String 
     switch randomFactNumber { 
     case 0: 
      randomFact = "Tigers are 10 feet tall." 
     case 1: 
      randomFact = "Tigers are amazing." 
     case 2: 
      randomFact = "Tigers have 10 feet." 
     default: 
      randomFact = "" 
     } 
     return randomFact 
    } 
} 
struct Balloon { 
    var number = 0 
    var image = UIImage(named: "") 
} 
class Lion { 
    var name = "" 
    var age = 0 
    var isAlphaMale = false 
    var image = UIImage(named: "") 
    var subSpecies = "" 
} 

Каждый из них находится в отдельном файле с именем идентично структуры/класса & «.swift». Тем не менее, единственный, который автокомплектует при вводе в ViewController.swift - это структура Tiger. Например, если бы я установил myTiger = Tiger(, это предложило бы name: String, age: Int и т. Д. Как я могу заставить остальных двух сделать то же самое? Мне очень нравится определять переменные inline вместо 5 строк кода для определения всех переменных.

Кто-нибудь знает, как это работает или почему структура Tiger будет делать это, пока структуры Воздушный шар и Лев не будут?

+0

@MaximShoustin все они выбраны в проект. Что-то примечание: автозаполнение работает для всех из них в соответствующих файлах .swift, а не в ViewController.swift (кроме 'Tiger') – jaysoncopes

+0

если так, то иногда индексирование Xcode падает, вы пытались открыть Xcode? –

+0

@MaximShoustin да. Я также сделал переиндексацию трюк безрезультатно. – jaysoncopes

ответ

2

Классы не получают инициализаторы бесплатно, как это делает Struct, если вы хотите иметь инициализатор для класса, вы должны создать его:

class Lion { 
    var name = "" 
    var age = 0 
    var isAlphaMale = false 
    var image = UIImage(named: "") 
    var subSpecies = "" 

    init(name: String, age:Int, isAlphaMale: Boolean, image: UIImage, subSpecies: String){ 
     self.name = name 
     self.age = age 
     self.isAlphaMale = isAlphaMale 
     self.image = image 
     self.subSpecies = subSpecies 
    } 
} 

Воздушный шар должен работать в автоматическом режиме, вероятно, чистые и создайте свой код, чтобы обновить xcode, устранит проблему.

От Apple Documentation:

почленно Инициализаторы для структурных типов

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


скопирована из previus части документа, чтобы добавить контекст

struct Resolution { var width = 0 var height = 0 }


let vga = Resolution(width: 640, height: 480)

В отличие от структур, класс экземпляров не получают инициализатор по умолчанию по умолчанию.

С классом выше вы будете иметь инициализатор, как на скриншоте ниже:

enter image description here

Как вы можете видеть на скриншоте шар работает прекрасно, а

enter image description here

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

+0

Частично отвечает, но объясняет, почему структура Balloon тоже не делает этого? – jaysoncopes

+0

Нет, просто запустил код и до сих пор не предлагает переменные Balloon. – jaysoncopes

+0

@jaysoncopes вы чистили и строили? Просто запустите не перекомпилирует любой предварительно скомпилированный код – Icaro

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