Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 将数据发送到swift3和firebase中的服务器_Ios_Arrays_Swift - Fatal编程技术网

Ios 将数据发送到swift3和firebase中的服务器

Ios 将数据发送到swift3和firebase中的服务器,ios,arrays,swift,Ios,Arrays,Swift,我试图更新firebase上的节点数据,但当我发送数组时,它崩溃了。它给出了一个错误 无法在0处存储类型为_SwiftValue的对象。只能存储NSNumber、NSString、NSDictionary和NSArray类型的对象 这是我的密码: reference_user.child(user_uid).updateChildValues(["name": username, "phone": phoneNo, "url": imgUrl, "emergency": emerLocalA

我试图更新firebase上的节点数据,但当我发送数组时,它崩溃了。它给出了一个错误

无法在0处存储类型为_SwiftValue的对象。只能存储NSNumber、NSString、NSDictionary和NSArray类型的对象

这是我的密码:

  reference_user.child(user_uid).updateChildValues(["name": username, "phone": phoneNo, "url": imgUrl, "emergency": emerLocalArr], withCompletionBlock: {( error, ref) in

                if (error != nil) {
                    KRProgressHUD.showError(progressHUDStyle: nil, maskType: nil, font: nil, message: "Couldn't Update the node")
                } else {
                 print("success")

                }
            })
emerLocalArr
NSMutableArray
。 这是我的结构

struct Emergency{
var emer_id: NSNumber
var emer_name: String
var emer_phoneNo: String

init(emergency: NSDictionary) {

    if emergency.object(forKey: "id") != nil {
        emer_id = emergency.object(forKey: "id") as! NSNumber
    }
    else{
        emer_id = 0
    }

    if emergency.object(forKey: "name") != nil {
        emer_name = emergency.object(forKey: "name") as! String
    }
    else{
        emer_name = ""
    }

    if emergency.object(forKey: "phoneNo") != nil{
        emer_phoneNo = emergency.object(forKey: "phoneNo") as! String
    }
    else{
        emer_phoneNo = ""
    }
}

func convertToDictionary() -> [String : Any] {
    let dic: [String: Any] = ["id":self.emer_id, "name":self.emer_name, "phoneNo":self.emer_phoneNo]
    return dic
}
}

您的数组包含类型为
Emergency
的自定义对象,因此首先需要将字典数组形成它。所以,在结构中添加一个返回dictionary对象的实例方法,然后使dictionary数组形成自定义对象数组。选中此项可将
struct
对象的数组转换为
Dictionary
的数组

之后,将该阵列设置为您的Firebase

let array = emerLocalArr.map { $0.convertToDictionary() }

reference_user.child(user_uid).updateChildValues(["name": username, "phone": phoneNo, "url": imgUrl, "emergency": array], withCompletionBlock: {( error, ref) in

你的价值观是什么类型的?该错误表明它们与Firebase不兼容emerLocalArr中的值是模型类struct Emergency{var emer_id:NSNumber var emer_name:String var emer_phoneNo:String init(Emergency:NSDictionary){}的值让数组=emerLocalArr.map{$0.convertToDictionary()}“NSFastEnumerationIterator.Element”类型的值(也称为“Any”)没有成员“convertToDictionary”。我已经在结构类中添加了convertToDictionary方法。@RahulGupta您需要在结构中添加方法
convertToDictionary
,检查我链接的答案,并在此函数中根据您的结构属性生成字典。先生,我也添加了我的结构。@RahulGupta您已经声明了使用类型为
[Any]
的u数组,请这样尝试。
让数组=(emerLocalArr as![Emergency])。映射{$0.convertToDictionary()}
或使用
[Emergency]
更改
emerLocalArr
的声明,而不是
[Any]
.Sir它工作了,但它也更新了节点名称。我添加了紧急情况下的图像,其中有两条记录,分别为0和1,但在更新之前它是1和2,那么我如何才能停止此操作?