我在func Contextual type AnyObject cannot be used within dictionary literal
中遇到错误addPet
,同时尝试使用字典中的newPet
参数成分填充数据库。
import Foundation
import Firebase
struct Pet {
var name:String?
var type:String?
var age:Int?
var feedingList:[String]
var walkingList:[String]
}
struct User {
var currentId:String?
var numberOfPets:Int?
var pets:[Pet]
}
class petBrain {
var reff = FIRDatabaseReference()
var currentUser:User = User(currentId: "",numberOfPets: 0,pets: [])
init(){
self.reff = FIRDatabase.database().reference()
}
func setUserId(cId:String?){
self.currentUser.currentId = cId
}
func addPet(newPet:Pet) {
self.reff.child("pets").childByAutoId().setValue(["name":newPet.name, "type":newPet.type, "age":newPet.age, "fList":newPet.feedingList, "wList":newPet.walkingList])
}
}
我已在其他viewController中完成此操作,类似于用户及其在字典形状中工作正常(不产生错误)
let em = emailTextField.text!
let us = usernameTextField.text!
...
else {
print("User created! Loging in.")
self.login()
// adding user to DB of users
self.ref.child("users").child(user!.uid).setValue(["email":em, "username":us])
}
我在宠物箱中做错了什么?它可能是由于struct或struct元素类型?这两个结构是否定义明确?
答案 0 :(得分:0)
nil
,则会使用看问题是Swift是一种严格类型的语言,如果你声明一个变量?你说它是nil类型。所以字典不能告诉它存储什么类型的值......
var myVar:String? //查看myVar
,您和您的类型截至目前已完全nil
var myVar:String! //查看myVar
,截至目前您的值为nil
,但您的类型肯定是String
只需将您的代码更改为: -
struct Pet {
var name:String!
var type:String!
var age:Int!
var feedingList:[String]
var walkingList:[String]
}
struct User {
var currentId:String?
var numberOfPets:Int?
var pets:[Pet]
}
class petBrain {
var reff = FIRDatabaseReference()
var currentUser:User = User(currentId: "",numberOfPets: 0,pets: [])
init(){
self.reff = FIRDatabase.database().reference()
}
func setUserId(cId:String?){
self.currentUser.currentId = cId
}
func addPet(newPet:Pet) {
let dict = ["name":newPet.name, "type":newPet.type, "age":newPet.age, "fList":newPet.feedingList, "wList":newPet.walkingList]
self.reff.child("pets").childByAutoId().setValue(dict)
}
}