2016-12-31 11 views
-6

Я следующий This Tutorial и я столкнулся выпуск Типа «Любой» не имеют Subscript членов, когда я определил заголовок и сообщение в ViewController.Swiftm I жду ваших добрых предложений
Тип «Любых» не имеет Subscript пользователей в Xcode 8.1 Swift 3

enter image description here вот код:

View Controller:

import UIKit 
import Firebase 
import FirebaseDatabase 

struct postStruct { 
let title : String 
let message : String 
} 


class TableViewController: UITableViewController { 

let posts = [postStruct]() 


override func viewDidLoad() { 
    super.viewDidLoad() 

    let databaseRef = FIRDatabase.database().reference() 
    databaseRef.child("posts").queryOrderedByKey().observe(.childAdded, with: { (snapshot) in 

    let title = snapshot.value!["title"] as! String 
    let message = snapshot.value!["message"] as! String 

     self.posts.insert(contentsOf: postStruct(title: title , message: message), at: index, 0) 
     self.tableView.reloadData() 
    }) 

    post() 

} 

func post() { 
    let title = "Title" 
    let message = "Message" 
    let post:[String:AnyObject] = ["title":title as AnyObject,"message":message as AnyObject] 

    let databaseRef = FIRDatabase.database().reference() 
    databaseRef.child("posts").childByAutoId().setValue(post) 

} 

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


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

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell") 

    let label1 = cell?.viewWithTag(1) as! UILabel 
    label1.text = posts[indexPath.row].title 

    let label2 = cell?.viewWithTag(2) as! UILabel 
    label2.text = posts[indexPath.row].message 


} 

} 
+3

Похоже, вы пропустили десятки подобных вопросов и имеющихся у них ответы, когда вы сделали исследование по этому вопросу ... * кашель * – Moritz

+0

@EricAya я прочитал десяток вопросов первым. –

+0

@ EricAya они несколько разные. –

ответ

0

Прежде всего вам нужно наложить snapshot.value as? [String: AnyObject], потому что компилятор не знает, какой тип моментального снимка.

Как это:

if let value = snapshot.value as? [String: AnyObject] { 

     let title = value["title"] as! String 
     let message = value["message"] as! String 
     self.posts.insert(contentsOf: postStruct(title: title, message: message), at: index, 0) 
     self.tableView.reloadData()  
    } 
+0

спасибо akash, где я должен разместить это и что удалить shoul? –

+0

@JackDowson От «let title» to above «post()» – Aakash

+0

Все еще получаю много ошибок, дорогой –