Ich arbeite an einer App und ich muss Daten in einem Array von einem View-Controller zum anderen senden. Ich ziehe einen String von einem Label in eine Variable und hänge sie an das Array an.Übergeben von Arrays in Swift
var time:String = timeLabel.text!
timeArray.append(time)
print("add data")
ich dann eine prepareForSegue
Funktion, wo ich will Daten, um von firstViewController
zu SecondViewController
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
{
let nvc = segue.destinationViewController as! SecondViewController
nvc.timeArray2 = timeArray
}
In meinem secondViewController, ich habe alle notwendigen Funktionen für einen tableView
, aber meine Tableview nie auffüllt mit allen Daten, wie die timeArray2
ist leer und wird entweder zu einem Absturz oder in einem leeren tableView
führen.
override func viewWillAppear(animated: Bool)
{
scrambleTimeTableView.reloadData()
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return timeArray2.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
let cell = scrambleTimeTableView.dequeueReusableCellWithIdentifier("myCell", forIndexPath: indexPath)
cell.textLabel?.text = timeArray2[indexPath.row]
cell.textLabel?.font = UIFont(name: "Arial", size: 18)
cell.textLabel?.textColor = UIColor.blueColor()
print("Populate tableview")
return cell
}
Alles, was ich vermisse?
EDIT:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
let cell = scrambleTimeTableView.dequeueReusableCellWithIdentifier("myCell", forIndexPath: indexPath)
cell.textLabel?.text = timeArray2[indexPath.row]
cell.textLabel?.font = UIFont(name: "Arial", size: 18)
cell.textLabel?.textColor = UIColor.blueColor()
print("Populate tableview")
return cell
}
ich einen Absturz auf cell.textLabel?.text = timeArray2[indexPath.row]
, da das Array in dem secondViewController leer. Der Fehler lautet:
Thread 1:EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
Die Ausgabe sagt:
empty
[]
fatal error: Index out of range
(lldb)
ich es das Array gedruckt habe und es war voll/leer, zusammen mit, wenn das Array in dem firstViewController füllt, das wie folgt aussieht dies:
add data
["01.12"]
add data
["01.12", "01.48"]
So weiß ich, dass das erste Array füllt, und es ist nicht imstande, alle Daten an den zweiten Controller zu senden.
Haben Sie 'tableView delegate' und' dataSource' festgelegt? – JuicyFruit
Initialisieren Sie das Array: timeArray = [String](), bevor Sie es verwenden? – Greg
Ja zu beiden, mein timeArray ist initialisiert und ich habe den Delegaten und dataSource – jmur216