これは私が尋ねる必要がある最後の質問になりますように! 私は48時間これを調べていますが、まだ回答が見つかりません。ここでsegueを使って構造体配列から値を渡す:index of range
は、私が使用していたコードです:
DataSource.swift:
struct Game {
var name : String
var cheats : [Cheat]
}
struct Cheat {
var name : String
var code : String
var desc : String
}
GameListViewController.swift
import Foundation
import UIKit
class GameListViewController: UITableViewController {
var gamesArray = [Game]()
var cheatsArray = [Cheat]()
override func viewDidLoad() {
super.viewDidLoad()
gamesArray = [Game(name: "Game1", cheats: [Cheat(name: "cheat1", code: "code1", desc: "desc1")])]
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return gamesArray.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = self.tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as UITableViewCell!
cell.textLabel?.text = gamesArray[indexPath.row].name
return cell
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let indexPath : NSIndexPath = self.tableView.indexPathForSelectedRow!
let DestViewController = segue.destinationViewController as! CheatListViewController
var DataPass : Cheat
DataPass = cheatsArray[indexPath.row]
DestViewController.cheatnameArray = DataPass.name
var DataPass2 : Cheat
DataPass2 = cheatsArray[indexPath.row]
DestViewController.cheatcodeArray = DataPass2.code
var DataPass3 : Cheat
DataPass3 = cheatsArray[indexPath.row]
DestViewController.cheatdescArray = DataPass3.desc
}
}
CheatListViewController.swift
class CheatListViewController: UITableViewController {
var cheatcodeArray = String()
var cheatnameArray = String()
var cheatdescArray = String()
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
W GameArrayから「Game 1」を選択すると、「DataPass」の最初のインスタンスから範囲外エラーのインデックスが即時に受信されます。 私はこのようにデータソースを構造化しているので、配列を別々に編集したり、オブジェクトをすっきりと整理したりする必要はありません。
誰かが正しい方向に向けることができたら、私は永遠に感謝しています!
種類を使用すると、任意の詐欺であなたのcheatsArray
変数を埋めていないように見える私にとって ロリー
indexPath.rowの値は何ですか? cheatsArray.countの値は何ですか? – Laffen
私が正しく理解している場合、cheatsArray.countは1でなければなりません。gameArrayの[Cheat]のインスタンスです。 または、構造配列がどのように機能するかについて私は完全に誤解していますか? – user1263909
私はあなたのcheatsArrayにチートを追加するあなたのコード内の場所を見つけることができません、これは手動で行う必要があります.. gamesArrayと同様。 – Laffen