将数组发布到Swift中的firebase数据库

编程入门 行业动态 更新时间:2024-10-24 23:24:56
本文介绍了将数组发布到Swift中的firebase数据库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 我需要将数据发布到firebase数据库中,这对于数组来说只能接受类型 NSArray 。然而,该应用程序需要添加到数组

将被发布的Json数据

对象:someObjectKey [ ArrayOfItems [ Item:someItemNumber Item:someItemNumber Item:someItemNumber ] TimeStamp:102047355 SomeOtherTimeStamp:null SomeInt:1111 someOtherInt:2222 SomeBoolean:false ] } 尝试的途径 - 转换a SwiftArray 到 NSArray - 将 NSMutableArray 转换为 NSArray

代码

<$ c $ b返回\(NSDate()。timeIntervalSince1970 * 1000)} var someI nt = 1111 var someOtherInt = 2222 let myArrayOfStuff = convertItemsToNSArray() $ b $ post:[String:Any] = [timestamp:Timestamp, someInt:someInt,someOtherInt:someOtherInt,items:ItemList] //方法调用引用FIRDatabase.database.reference.child ... FirebaseDatabaseService.databaseReference.setValue(post)} private func convertItemsToNSArray() - > NSArray { var thisArray:NSMutableArray = [] 用于项目中的项目{ thisArray.add([name:Foo,key :bar,someCoolInt:1234])} 返回thisArray //这不起作用,因为它会以NSMutableArray的形式返回}

干杯

解决方案我不记得究竟是什么原因,但也遇到了类似的问题,在android和Ios.workaround是保存数组通过将其转换为字典第一。

比方说,我有经度和纬度的数组:

我首先创建一个类来包装lat和long。我有一个函数来获取包装所需数据的字典。

class HiddenLatlng { private var latitude:Double private var longitude:Double init(lat:Double,lng:Double){ self.latitude = lat self.longitude = lng } func toDictionery() - > [String:Double] { var dict = [String:Double]() dict [latitude] = self.latitude dict [longitude] = self.longitude

在将数组保存到firebase之前,首先将该数组转换为使用上面的类的字典。

var dict = [ String:AnyObject]()//主字典保存到firebase var dictArray = [String:[String:Double]]()// temp字典 for(index,element)in hide.vertices.enumerate(){ dictArray [String(index)] = HiddenLatlng(lat:element.latitude,lng:element.longitude).toDictionery()} dict [ eventLatLngList] = dictArray //将临时词典添加到主词典中。

`

现在我们可以保存($ key).updateChildValues(dict){(error()){/ * pre $ self $ :NSError?,引用:FIRDatabaseReference)在完成(错误)/ /如果一些错误处理它。 }

我希望它能节省您一些时间和麻烦:)

Question I need to post data into the firebase database, which (in terms of arrays) can only accept type NSArray. The application however, needs to add to the array

Json Data that wil be posted

Object: someObjectKey[ ArrayOfItems[ Item: someItemNumber Item: someItemNumber Item: someItemNumber ] TimeStamp: 102047355 SomeOtherTimeStamp: null SomeInt: 1111 someOtherInt: 2222 SomeBoolean: false ] }

Goal How can I get the data above to be pushed up into the database?

Attempted Avenues -Convert a SwiftArray to a NSArray -Convert an NSMutableArray to a NSArray

Code

public func postToFireBase(){ var Timestamp: String { return "\(NSDate().timeIntervalSince1970 * 1000)" } var someInt = 1111 var someOtherInt = 2222 let myArrayOfStuff = convertItemsToNSArray() let post: [String : Any] = ["timestamp": Timestamp, "someInt": someInt, "someOtherInt": someOtherInt, "items": ItemList] //Method Call References the FIRDatabase.database.reference.child... FirebaseDatabaseService.databaseReference.setValue(post) } private func convertItemsToNSArray() -> NSArray{ var thisArray: NSMutableArray = [] for item in items{ thisArray.add(["name": "Foo", "key": "Bar", "someCoolInt": 1234]) } return thisArray //This won't work because it's coming back as NSMutableArray anyway }

Cheers

解决方案

I can't remember exactly whats the reason, but did faced similar problem too, in both android and Ios.workaround is that save the array by converting it to a dictionary first.

let's say I have array of longitude and latitude:

I first create a class for to wrap lat and long. I have a function to get the dictionary which wraps the required data.

class HiddenLatlng { private var latitude: Double private var longitude: Double init(lat: Double, lng: Double) { self.latitude = lat self.longitude = lng } func toDictionery() -> [ String : Double ] { var dict = [ String : Double ]() dict["latitude"] = self.latitude dict["longitude"] = self.longitude return dict }

}

just before saving the array to firebase, first convert this array to dictionary using above class.

var dict = [String: AnyObject]() // main dictionary saved to firebase var dictArray = [ String : [String: Double] ]() // temp dictionary for (index, element) in hide.vertices.enumerate(){ dictArray[String(index)] = HiddenLatlng(lat: element.latitude, lng: element.longitude).toDictionery() } dict["eventLatLngList"] = dictArray // add temp dictionary to main dictionary.

`

now we can save it to firebase.

self.reference.child("yourKey").child(key).updateChildValues(dict) { (error: NSError?, reference: FIRDatabaseReference) in completion(error) // if some error handle it. }

I hope it saves you some time and trouble :)

更多推荐

将数组发布到Swift中的firebase数据库

本文发布于:2023-11-26 18:33:43,感谢您对本站的认可!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数组   数据库   Swift   firebase

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!