gpt4 book ai didi

ios - 获取单个数组项

转载 作者:行者123 更新时间:2023-11-28 07:39:22 25 4
gpt4 key购买 nike

我正在从 firebase 数据库读取数据并将其存储在消息对象中,然后如何访问该数组中的每个元素?即我如何使用城市字符串,因为我希望将其分配给标签。与数组中的其他元素相同。

    firebaseDB.collection("user").document(key).collection("address").getDocuments() { (querySnapshot, err) in
if let err = err {
print("Error getting documents: \(err)")
}
else {
self.dataArr.removeAll()
for document in querySnapshot!.documents {
//print("\(document.documentID) => \(document.data())")
let msgdata = document.data() as! [String:Any]
var msgObj = Details()
if let city = msgdata["city"] as? String {

msgObj.city = city
}

if let country = msgdata["country"] as? String {

msgObj.country = country
}
if let county = msgdata["county"] as? String {

msgObj.county = county
}

if let lineOne = msgdata["lineOne"] as? String {

msgObj.lineOne = lineOne
}
if let lineTwo = msgdata["lineTwo"] as? String {

msgObj.lineTwo = lineTwo
}
if let postCode = msgdata["postCode"] as? String {

msgObj.postCode = postCode
}
self.dataArr.append(msgObj)

}


}
}

我需要访问每个元素,因为我有另一个函数,该函数将获取每个元素并将其放置在我的 ViewController 中的标签上

这样的东西才是我想要的

func DisplayAddress(){
city.text = city
postCode.text = postCode
}

最佳答案

我可能完全读错了问题,但在尝试阅读您的问题时,我认为术语可能是需要澄清的地方;对象与数组

对象 具有属性 - 让我们检查 Details() 对象

var msgObj = Details()

其中包含一个 用户的地址信息。所以从概念上讲,这就是它在 FireStore 中的表示方式

users
this_user
address
city: "some city"
country: "some country"
county: "some county"
line1: "line one"

“文档”是存储在地址集合中的项目

  city: "some city"
country: "some country"
county: "some county"
line1: "line one"

并且您的 Details() 对象具有与这些文档相对应的属性,并将它们作为属性存储在对象中;市、县等

 msgObj.city = city
msgObj.country = country

另一方面,数组 包含一系列对象,而不是属性。例如一个数组通常包含城市、国家等,但它会包含一系列 Details() 对象,并且每个 Detail() 对象都具有城市、国家等属性。例如,假设您想要处理多个不同用户的地址 - 您将为每个用户创建一个 Details() 对象,其中包含他们的地址信息并将每个用户追加到一个数组中。

self.dataArry[0] = the Details() objects of one user
self.dataArry[1] = the Details() object of another user
self.dataArry[2] = the Details() object of a third user

然后,例如,您可以显示该用户一定半径范围内的用户,或者向他们发送电子邮件等。

要回答您的问题,如果您使用的是单个用户地址信息,则不需要数组,您只需将其存储为类中的单个 Details() 对象变量即可。

class ViewController: UIViewController {
var myUserAddress = Details()

func to get this users address documents from FireStore {
if let city = msgdata["city"] as? String {
self.myUserAddress.city = city
}
if let country = msgdata["country"] as? String {
self.myUserAddress.country = country
}
//remember that the properties are only valid from here on
//as FireStore is asychronous
self.DisplayCity()
self.DisplayLocation()
}

//and then later on when you want to display those properties
func DisplayCity() {
let city = self.myUserAddress.city
print(city)
}
func DisplayLocation() {
let lon = self.myUserAddress.logitude
let lat = self.myUserAddress.latitude
//show the location on a map via lon & lat
}

关于ios - 获取单个数组项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52678973/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com