2016-02-26 2 views
0

Эй, я пытаюсь классифицировать или в основном вручную статистику списка таким образом, чтобы я мог предоставить программные условия для поиска именно того, что я ищу, я искал, сколько голов было забито в первых 0 до 45 (первая половина) игры, в которую играла Барселона в определенный день, когда я мог. Скажем в коде, найдите мне все игры, которые были сыграны в эту дату, и где два или более гола были забиты в первые 0-45 минут. Поскольку я не уверен, что я сделал это правильно, но я попытался дать строкам число/значение Int, чтобы представить минуту, когда цель была оценка в игре. И я также сделал то же самое с датой игры. Но проблема в том, что есть ошибка в (не возражает орфографическую ошибку лол «Барселоны»)Участник экземпляра Цели нельзя использовать для типа «ViewController» SWIFT XCODE

let BarcelonavsRealMadrid1 = [Goals, Penaltys] 

Цель член Instance не может быть использована по типу «ViewController»

также, если Theres лучшим способом сделайте это, пожалуйста, вы можете переписать мой код. Благодаря

Код:

import UIKit 

class ViewController: UIViewController { 

    let Games = [BarcelonavsRealMadrid1: 1/13/14] 
    let SpainPrimeraDivision = [RealMadrid, Bareclonia] 
    let RealMadrid = [BarcelonavsRealMadrid1: 1/12/14] 
    let Bareclonia = [BarcelonavsRealMadrid1: 1/12/14] 

    let BarcelonavsRealMadrid1 = [Goals, Penaltys] 
    let Goals : [String : Int] = ["BarcelonaGoal":21,"RealMadridGoal":23] 
    let Penaltys : [String : Int] = ["RealMadridPenalty":21,"BarcelonaPenalty":23] 


override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 


} 
+1

использования 'пусть BarcelonavsRealMadrid1 = [Цели, Penaltys]' в viewDidLoad –

+0

Ваш код вряд ли читаемый. Следуйте инструкциям Swift по кодированию. – dasdom

+0

Хорошо, когда я помещал его в загрузку ViewDid, он говорит: «Использование локальных переменных целей до его объявления? – Hunter

ответ

1

Ваш вопрос в том, что вы делаете ссылки между свойствами класса во время инициализации - это не допускаются. Один из способов обойти это установить некоторые из вещей, которые на начальном этапе, а затем в viewDidLoad или в viewWillAppear установить зависимость, как это:

//-------All Games Ever played------------------------------------ 
var BarcelonavsRealMadrid1 = [[String : Int]]() // if you want this globally 
let Goals : [String : Int] = ["BarcelonaGoal":21,"RealMadridGoal":23] 
let Penaltys : [String : Int] = ["RealMadridPenalty":21,"BarcelonaPenalty":23] 


override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
    BarcelonavsRealMadrid1 = [Goals, Penaltys] 
} 

также было несколько проблем, предложенных @ luk2302 в своем ответе

+0

Удивительно, но для других ценностей вверху, которые полагаются на переменную ниже, мы только что отредактировали ее, говорит то же самое, и «экземпляр участника не может использоваться для типа ViewController , Так что я предполагаю, что я просто делаю то же var Games = [[AnyObject: Int]](), но затем возникает ошибка, и я не могу заменить AnyObject на строку, потому что, ссылаясь на ценный – Hunter

+0

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

1

Попробуйте это

var BarcelonavsRealMadrid1:[[String:Int]] { return [Goals, Penaltys] } 
2

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

class ViewController: UIViewController { 
    let foo = 12 
    let bar = foo 
} 

Обычно вы должны установить переменные в методе init. Но так как у вас есть UIViewController здесь, вы должны сделать это в viewDidLoad. Таким образом, вы должны написать

class ViewController: UIViewController { 

    var foo : Int! 
    var bar : Int! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     foo = 12 
     bar = foo 
    } 
} 

Ваш код имеет несколько более проблем, чем что, однако:

  • вы пытаетесь получить доступ к переменным, прежде чем они будут объявлены повсюду
  • что 1/12/14 Предполагалось быть?Я гарантирую вам, что это не дата
  • остановка начиная имена переменных с прописными буквами

Что вы должны сделать:

  • переименовать все переменные
  • изменить все, что вам переменные var и присваивать им значение в правильном порядке внутри viewDidLoad
  • сделка с date situati на
+0

haha ​​thanks ill fix it – Hunter

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