2016-05-08 3 views
0

Я пытаюсь передать данные из моей структуры Cheats в новый контроллер tableview, чтобы заполнить новую таблицу соответствующей информацией. Я сделал исследование, но новичок в быстром. У меня есть опыт в PHP, но передавая мое знание оказывается довольно сложно ...Передача данных из массива struct в новый контроллер tableview

В моей подготовке к классу SEGUE я получаю несколько ошибок:

Definition конфликтовать с предыдущим значением:

var DataPass = CheatsArray[indexPath.row] 

Невозможно присвоить значение типа 'Строка' на '[String]:

DestViewController.CheatsArray = DataPass.name 

Вот копия моих нынешних 3 файлов

Структуры и массивы:

struct Game { 
    var name : String 
    var cheats : [Cheat] 
} 

struct Cheat { 
    var name : String 
    var code : String 
    var description : String 
} 

// Create Our Game Info And Cheats/Codes For Each Game! 
//------------------------------------------------------- 
let COD4 = Game(name: "Call Of Duty 4", cheats: [Cheat(name: "Cheat", code: "Code", description: "Description")]) 
let GTAV = Game(name: "Grand Theft Auto 5", cheats: [Cheat(name: "Cheat", code: "Code", description: "Description")]) 


// Place Our New Games Inside This Array! 
//--------------------------------------- 
let ArrayOfGames = [COD4,GTAV] 

GameListController:

import Foundation 
import UIKit 

class GamesListViewController: UITableViewController { 

    var CheatsArray = [Game]() 

    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
    } 

    override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
     return 1 
    } 

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return ArrayOfGames.count 
    } 

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let cell = self.tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) 
     cell.textLabel?.text = ArrayOfGames[indexPath.row].name 
     return cell 
    } 

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     let indexPath : NSIndexPath = self.tableView.indexPathForSelectedRow! 
     let DestViewController = segue.destinationViewController as! CheatsListViewController 

     let DataPass : Game 
     var DataPass = CheatsArray[indexPath.row] 
     DestViewController.CheatsArray = DataPass.name 

    } 

} 

CheatListController:

class CheatsListViewController: UITableViewController { 

    var CheatsArray = [String]() 

    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 

    override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
     return 1 
    } 

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return CheatsArray.count 
    } 

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

     let cell = self.tableView.dequeueReusableCellWithIdentifier("cell2", forIndexPath: indexPath) 
     cell.textLabel?.text = CheatsArray[indexPath.row] 
     return cell 

    } 

} 
+1

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

+0

А, я извиняюсь! Я посмотрю на редактирование моего вопроса. Спасибо за головы :) – user1263909

+0

Вопрос отредактирован, еще раз спасибо за то, что дал мне знать :) – user1263909

ответ

0

Первая ошибка происходит потому, что вы определили DataPass дважды, один ряд за другим. Вы не можете сделать это в том же объеме. Измените имя.

Вторая ошибка заключается в том, что вы не можете присвоить тип значения 'String' '[String]'. Просто смотрим на CheatsArray и имя переменные, ясно, что первым является массив, а второй, скорее всего, является строкой. Вы можете захотеть append имя массива.

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