我的数据模型:
class KeyModell {
var UserID : String?
var key : Array<Any>?
init(UserIDString : String , keyString : Array<Any>? ) {
UserID = UserIDString
key = keyString
}
}
我的ViewContoller:
class ViewController: UIViewController {
var userID = ""
var keyContiner = [KeyModell]()
@IBOutlet weak var tableViewOutLet: UITableView!
@IBOutlet weak var textFeildOUtLet: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
FetchUsers(userID: userID) { (user) in
// print("userID His Profile \(user.id)")
}
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(true)
fetchKey()
tableViewOutLet.reloadData()
}
@objc func fetchKey () {
Database.database().reference().child("AdminKeys").observeSingleEvent(of: .value) { (snapshot) in
// print(snapshot.value)
for child in snapshot.children.allObjects as! [DataSnapshot] {
if let dict = child.value as? [String : Any] {
// print(dict)
let userID = dict["UserID"] as! String
if let keyID = dict["key"] as! Array<Any>? {
let key = KeyModell.init(UserIDString: userID, keyString: keyID)
self.keyContiner.append(key)
self.tableViewOutLet.reloadData()
}
self.tableViewOutLet.reloadData()
}
}
}
func FetchUsers (userID : String , Compation : @escaping (UserModel)->Void) {
Database.database().reference().child("Users").child(userID).observe(.childAdded) { (snapshot) in
if let dic = snapshot.value as? [String : Any] {
let user = UserModel.TransferUserModel(dic: dic, key: snapshot.key)
Compation(user)
}
}
}
@IBAction func saveKeybtn(_ sender: Any) {
let keyString : String = textFeildOUtLet.text!
let keys = keyString.components(separatedBy: ",")
let ref : DatabaseReference!
ref = Database.database().reference()
let AdminKeysREF = ref.child("AdminKeys")
let newKeysPostID = AdminKeysREF.childByAutoId()
guard let userID = Auth.auth().currentUser else {return}
let userKeyId = userID.uid
newKeysPostID.setValue(["UserID": userKeyId , "key" : keys] )
}
extension ViewController : UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return keyContiner.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! KeyCell
return cell
}
我的手机:
class KeyCell: UITableViewCell {
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
@IBOutlet weak var keyOUtLet: UILabel!
var key : KeyModell?{
didSet {
upDatekey()
}
}
func upDatekey() {
keyOUtLet.text = key?.key
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
我的数据库:
当我打印(cell.key)时,它给我结果:
问题是,当我尝试将标签设置为这样的关键模式时:
func upDatekey() {
keyOUtLet.text = key?.key
}
它给我错误“无法分配'[Any]类型的值?”键入“字符串?”]
由于我的数据库键值为Array,所以我将其设置为:
var key : Array<Any>?
我认为这里的问题我无法解决
我解决了问题,