2016-01-23 2 views
0

У меня есть проблема с добавлением массива, вы можете видеть мой код, я проверил линию этой проблемы путь: self.items.append (....)
массив не приложенные и оставаться пустыми. вот мой код:добавление массива с помощью быстрых 2

// 
// ViewController.swift 
// firer 
// 
// Created by mike matta on 06/01/2016. 
// Copyright © 2016 Mikha Matta. All rights reserved. 
// 

import UIKit 
import Firebase 

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { 

    @IBOutlet weak var showdatA: UILabel! 
    @IBOutlet weak var tableView: UITableView! 
    var items:[String] = [] 
    var userFNAME:String = "" 
    var userDOB:String = "" 
    let textCellIdentifier = "TextCell" 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     tableView.delegate = self 
     tableView.dataSource = self 
     // Do any additional setup after loading the view, typically from a nib. 
     /////////// 
     let UsersChannel = Firebase(url: "https://MYFIREBASE.firebaseio.com/users") 

      UsersChannel.observeEventType(.ChildAdded, withBlock: { snapshot in 


       if let az = String?((snapshot.value.objectForKey("full_name"))! as! String) { 

        self.userFNAME = az 

       } 
       if let az2 = String?((snapshot.value.objectForKey("dob"))! as! String) { 

        self.userDOB = az2 
       } 

       print("\(self.userFNAME) - \(self.userDOB)") 
       self.items.append(self.userFNAME) // heeereeee what i am trying to doooooooo 


      }) 

     // print(self.items) 





    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

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

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

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCellWithIdentifier(textCellIdentifier, forIndexPath: indexPath) as UITableViewCell 

     let row = indexPath.row 
     cell.textLabel?.text = items[row] 

     return cell 
    } 

    // MARK: UITableViewDelegate Methods 
    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
     tableView.deselectRowAtIndexPath(indexPath, animated: true) 

     let row = indexPath.row 
     print(items[row]) 
    } 


} 

я судимый поместить определение массива внутри viewdidload() он работает ... но мне это нужно за ее пределами (например, мой код) ..
я судимый поставить массив вне асинхронного блока тоже ... еще не добавляет
.... какой-нибудь?

+0

это линия, где вы добавляете к массиву, фактически вызываемому? –

+0

@Techprimate эта строка работает нормально: print ("\ (self.userFNAME) - \ (self.userDOB)") –

ответ

0

Я думаю, что ваш код работает! Вопрос: Почему, по вашему мнению, ваш массив все еще пуст? Вам нужно подумать о том, что ваши инструкции выполнены. На этой линии:

// print(self.items);

Ваш массив еще пуст, потому что закрытие пока не называется. Поместите эту строку сразу после добавления, и вы увидите.

И, Просто добавьте self.tableView.reloadData() после вашего Append и вы будете счастливы :) (Это будет сказать вашему Tableview вспомнить методы делегата (numberOfRowsInSection ...))

+0

отлично !!! оно работает !!! благодаря :) !! –

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