私の解析データベースに接続し、すべてのユーザーオブジェクトを通過し、各カテゴリの文字列配列に名前と電子メールを追加する関数があります。スウィフト文字列が空のまま表示される
私はそれをviewWillAppear関数中に正しい値を持つとして配列を表示しますが、配列の行の量を返すまで来るとき、何らかの理由で空です。
何が原因で起こりますか?ここで
は、問題がcellForRowAtIndexPathが実行されていると移入表をviewWillAppear()実行する前に、配列にデータをフェッチされている私のコード
import UIKit
import Parse
class ContactTableViewController: UITableViewController {
//arrays to hold user's name and email
var users_names = [String]()
var users_emails = [String]()
override func viewWillAppear(animated: Bool){
//Load user email and name
let query: PFQuery = PFUser.query()!
query.findObjectsInBackgroundWithBlock {
(objects:[PFObject]?, error:NSError?) -> Void in
if error == nil {
// The find succeeded.
print("Successfully retrieved \(objects!.count) users.")
// Do something with the found objects
if let user_objects = objects {
for user in user_objects {
self.users_names.append(user.valueForKey("name") as! String)
self.users_emails.append(user.valueForKey("email") as! String)
}
}
} else {
// Log details of the failure
print("Error: \(error!) \(error!.userInfo)")
}
self.users_names.removeAtIndex(1)
self.users_emails.removeAtIndex(1)
self.tableView.reloadData()
}
}
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UIColor(red: 0.8353, green: 0.9098, blue: 0.902, alpha: 1.0)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
// MARK: - Table view data source
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
//return number of rows in table
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return users_names.count
}
です。
私はviewWillAppearの終わりにviewWillAppear
UIApplication.sharedApplication().beginIgnoringInteractionEvents()
、その後.endIgnoringInteractionEvents()の開始時にこれを追加しようとしましたが、それはどちらかそれを修正しませんでした。
すべての手順を追跡します。 'for user_objects'ブロックは実行されていますか? 'self.users_names.removeAtIndex(1)'の前にある配列の数は何ですか? – Ryan
デバッグ時に正しい行の値は何ですか? – PeejWeej
番号は9です。その後removeAtIndexを実行してリストから管理者の電子メールを削除して、自分自身に電子メールを送信することはできません.8時です。viewwillappearが処理を終了する前にcelfforrowatindexpath関数が実行されていることがわかりました。私はviewwillappearの前に実行からcellfforrowatindexpathを一時停止する方法がわかりません。 –