[英]Returning Swift Dictionary as AnyObject
func toAnyObject() -> AnyObject {
return [
"name": title,
"addedByUser": subtitle,
"completed": imageURL
]
}
The above code produces the following error: 上面的代码产生以下错误:
Contextual type 'AnyObject' cannot be used with dictionary literal
UPDATE: I am trying to create the toAnyObject function and utilize it in a Firebase application. 更新:我正在尝试创建toAnyObject函数并在Firebase应用程序中使用它。 I get the following:
我得到以下内容:
, reason: '(setValue:) Cannot store object of type _SwiftValue at name. Can only store objects of type NSNumber, NSString, NSDictionary, and NSArray.'
let rootRef = FIRDatabase.database().reference()
let categoriesRef = rootRef.child("categories")
let annuals = FlowerCategory(id: 1, title: "Annuals",subtitle :"Plants that just last one season. These plants will die in the winter. ", imageURL: "annuals.jpg")
let perennials = FlowerCategory(id: 2, title: "Perennials",subtitle :"Plants come back year after year. These are also very less expensive", imageURL: "Perennial.jpg")
let flowerCategories = [annuals,perennials]
for flowerCategory in flowerCategories {
let categoryRef = categoriesRef.child("category")
categoryRef.setValue(flowerCategory.toAnyObject()) <- THIS LINE ERROR
}
Dictionary
is a value type in swift. Dictionary
是一种快速的值类型 。 And AnyObject
only accepts reference types . 而且
AnyObject
只接受引用类型 。
So in order to return a Dictionary
use Any
instead of AnyObject
. 因此,为了返回
Dictionary
使用Any
而不是AnyObject
。
func toAnyObject() -> Any {
return [
"name": title,
"addedByUser": subtitle,
"completed": imageURL
]
}
Cast it to NSDictionary
: 投射到
NSDictionary
:
func toAnyObject() -> AnyObject {
return [
"name": title,
"addedByUser": subtitle,
"completed": imageURL
] as NSDictionary
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.