gpt4 book ai didi

arrays - 如何提取 __NSArrayM 中的每个元素?

转载 作者:行者123 更新时间:2023-11-28 15:07:10 24 4
gpt4 key购买 nike

我正在使用 Firestore(仍处于测试阶段),我的数据结构如下:

enter image description here

我想以字符串的形式获取每种成分,以使用它们的名称创建 Ingredient 类的对象。这是我正在使用的方法:

private func loadIngredients(){
let db = Firestore.firestore()
let recipeCollectionRef = db.collection("dishes").document((recipe?.name)!)
recipeCollectionRef.getDocument { (document, error) in
if let document = document {
print("Document data: \(document.data())")
print("\(document.data().values)")
for value in document.data().values {
print("Value: \(value)")
print(type(of: value))
}
} else {
print("Document does not exist")
}
}
}

这目前产生:

Document data: ["ingredients": <__NSArrayM 0x60000025f2f0>( banana, oatmeal ) , "level": easy] LazyMapCollection, Any>(_base: ["ingredients": <__NSArrayM 0x60000065ad60>( banana, oatmeal ) , "level": easy], _transform: (Function)) Value: ( banana, oatmeal ) __NSArrayM Value: easy NSTaggedPointerString

根据我阅读 Apple 关于字典的文档的理解:我的字典有 [String: Any] 类型,在这种情况下,“成分”是充当键的字符串,值可以是任何对象。我正在使用的数组是一个可变数组。

我对如何获取该数组及其各自的元素感到非常困惑。我曾尝试从 LazyMapCollection 转换为 String,但这会将整个数组生成为字符串。我还尝试通过键“成分”访问该值,但这不起作用,因为“无法使用类型为 LazyMapCollection<[String : Any], Any> 的索引下标 String 类型的值

最佳答案

如您所述,document.data() 是一个字典 ([String:Any])。

那么从这里开始:

if let document = document, let data = document.data() as? [String:Any] {
}

现在如果你想访问配料数组,你可以这样做:

if let ingredients = data["ingredients"] as? [String] {
}

所有你得到:

private func loadIngredients(){
let db = Firestore.firestore()
let recipeCollectionRef = db.collection("dishes").document((recipe?.name)!)
recipeCollectionRef.getDocument { (document, error) in
if let document = document, let data = document.data() as? [String:Any] {
// Get the ingredients array
if let ingredients = data["ingredients"] as? [String] {
// do whatever you need with the array
}

// Get the "easy" value
if let east = data["easy"] as? String {
}
} else {
print("Document or its data does not exist")
}
}

关于arrays - 如何提取 __NSArrayM 中的每个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48273402/

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