Swift:如何表示类似实例的类型:[“区域”:“区域1”和“州”::[“州”:“州1”和“城市2”:[“城市1”和“城市2”]]
以下是一个例子:Swift:如何表示类似实例的类型:[“区域”:“区域1”和“州”::[“州”:“州1”和“城市2”:[“城市1”和“城市2”]],swift,Swift,以下是一个例子: var example1 = [ [ "region": "Region1", "states": [ [ "state": "State1", "cities": ["City1", "City2&qu
var example1 = [
[
"region": "Region1",
"states": [
[
"state": "State1",
"cities": ["City1", "City2"]
]
]
]
]
如何表示类型,让我给出一个简单的示例,例如
[“苹果”、“橙色”、“香蕉”]
,那么类型是[String]
,现在我想得到example1的类型。提前感谢。您应该创建一个嵌套类型,如:
struct Example {
let region: String
let states: [State]
struct State {
let state: String
let cities: [String]
}
}
因此,结果将是:
let examples: [Example] = ...
不推荐 否则,您可以将其设置为
[[String:Any]]
,但会丢失所有嵌套类型,需要手动强制转换所有类型
var example1: [[String: Any]] = ...
您显示的文本表示一个字典数组。但是字典有不同类型的值,所以Swift能做的最好的事情就是将类型
Any
的值设置为,因此文本的类型是[[String:Any]]
。然而,要访问字典值作为有用的东西,您需要进行大量的转换
这表明您不应该使用字典来存储数据。您应该编写自己的结构/类
你还说,
因为我在该类型中有一个plist,所以我必须首先定义一个类型,以接收该plist文件中的信息
您可以将这些结构/类设置为可编码的,然后可以使用PropertyListDecoder
从属性列表中读取数据:
struct Example: Codable {
let region: String
let states: [State]
struct State: Codable {
let state: String
let cities: [String]
}
}
let propertyListData: Data = ... // get the data from your property list
let decoder = PropertyListDecoder()
do {
let decoded = decoder.decode([Example].self, from: propertyListData)
// access your data here via "decoded"
} catch {
print(error) // error has occurred
}
要解码您的财产清单:
struct Example: Codable {
let region: String
let states: [State]
struct State: Codable {
let state: String
let cities: [String]
}
}
let propertyListData: Data = ... // get the data from your property list
let decoder = PropertyListDecoder()
do {
let decoded = decoder.decode([Example].self, from: propertyListData)
// access your data here via "decoded"
} catch {
print(error) // error has occurred
}
这是一个
[[String:Any]]
。这就是你想要的吗?我想在代码中定义一个类型,所以编译时。因为我在那个类型中有一个plist,所以我必须首先定义一个类型,以接收该plist文件中的信息。就这么简单吗?根据您的评论,我很确定这是一个。看起来你是在从plist读取数据?为什么不使用Codable
structs和PropertyListDecoder
而不是弱类型词典呢?原因很简单,我是一名新学生。。。一切都在学习的道路上…我可以问你另一个关于上传用户的地区信息到数据库的问题吗。如果我想应用程序可以适应不同的语言使用本地化系统,我可以翻译Plist文件使用本地化。然后用户使用不同的语言来显示语言的区域信息。但如果上传到数据库,可以上传什么样的信息?直接上传区域字符串?也许这不好。从数组上传区域的索引?(也许这个方法可以,但是开发人员以后不能更改plist文件的区域顺序,对吗?)?你有什么解决办法吗