Ich habe gesucht und habe nicht gefunden, jemand, der etwas wie diese aber wenn ja, bitte zögern Sie nicht, weisen Sie mich in die richtige Richtung!Füllen UITableview mit Instanz zu füllen Array
So MVC, ich habe eine Instanz in meinem erstellt UITableviewcontroller
var brainLink = LessonBrain()
Das ist mein viewDidLoad die Daten abrufen soll und das Array 'subjectNameOneDay' bevölkern:
let todoDictionary = NSUserDefaults.standardUserDefaults().dictionaryForKey("subjectDictionary") ?? [:]
brainLink.parseQuery(self.setupData.integerForKey("pupilNumber"), dictName: "subjectDictionary")
self.subjectNameOneDay = todoDictionary["TwoTuesday"]! as! NSArray
self.tableView.reloadData()
Die Instanz brainLink
ruft die Methode 'parseQuery' auf:
func parseQuery(numberToRetreive: Int, dictName:String) {
var tempArray:[String] = []
if self.daysOfTheWeek.contains("\(self.currentDayOfTheWeekForLabel)") {
print(currentDayOfTheWeekForLabel)
print("parse query for data number \(numberToRetreive) started")
let query:PFQuery = PFQuery(className: self.setupData.valueForKey("organisationID") as! String)
query.fromLocalDatastore()
query.whereKey("PupilNumber", equalTo: "\(numberToRetreive)")
query.findObjectsInBackgroundWithBlock { (objects, error) -> Void in
if (error == nil) {
print("Successfully retrieved 2 \(objects)")
for object in objects! {
var periodCounter = 1
while periodCounter <= 6 {
print(self.currentDayOfTheWeekForData)
tempArray.append(object.valueForKey("\(self.currentDayOfTheWeekForData)P\(periodCounter)") as! String)
print(tempArray)
periodCounter += 1
}
self.addItem(tempArray, weekDayPeriod: self.currentDayOfTheWeekForData, dictionaryName: dictName)
}
}else {
print(error!.userInfo)
}
}
}else{
print("It's the weekend!")
}
print("query function returning temp array")
}
Das alles funktioniert gut und das Array wird jedoch das Problem, das ich habe, ist, dass egal, was ich versucht habe, oder wo ich lege meine self.tableView.reloadData()
Es muss nicht immer ‚warten‘ für die Daten, bevor Sie versuchen geholt werden neu geladen werden Der Tisch.
Wo kann ich diesen Code/ordnen, so dass es Daten holt DANN lädt?
Fügen Sie die reloadData zu Ihrem Rückruf hinzu, nicht die Ansicht geladen wurde. Zu diesem Zeitpunkt werden die neuen Daten abgerufen. – MDB983
Entschuldigung für meine Ignoranz ..... wie würde ich es zu meinem Rückruf hinzufügen? meinst du, return self.tableView.ReloadData() aus der parseQuery-Funktion ?? – MartynE23
ja, aber Sie brauchen eine Adresse als Referenz so _weak MyTableViewClass * MyClass = self. Dann in Pars-Abfrage-Funktion mylass.reloadData (Sie sollten überprüfen, meine Klasse wurde nicht vor dem Aufruf der Methode nil'd out). Sie müssen sicherstellen, dass die Datenquelle tableview auch vor dem Aufruf von my class.reloadData gefüllt ist. – MDB983