问题标签 [swift-dictionary]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
148 浏览

ios - Swift我如何制作Multimap(Java)

我开始 Swift 和 IOS 开发,所以我对此很陌生,我在 java 中制作我想要的东西(参见示例)但我找不到如何在 Swift 中做我想在 Swift 上制作字典,我知道我可以这样

但这不是我想要的。我像这样在java中做同样的事情

如果没有这样的键,则必须创建一个键,如果有键,则必须将值添加到键中。例如,

  1. "choose" --> "choosing" (没有任何键 "choose" 所以创建一个并把它放在 "choosing" 值中选择 = ["choosing"] )

2.“choose”-->choosen(有一个名为“choose”的键,所以在里面加上这个值。ch​​oose = ["choosing","choosen"] 谢谢你的帮助:)

0 投票
0 回答
98 浏览

swift - 可变集合作为 swift 字典中的值被复制而不被引用,因此变得不可变

我的集合被复制到字典而不是存储为可变引用。

例如:

0 投票
1 回答
389 浏览

swift - Snap Kit 登录工具包错误 (Swift)

复制文档会给我一个“类型'[AnyHashable:Any]?' 没有下标成员。错误发生在“let data =”行。如果我强制展开资源,则错误移至下一行

如果我打开数据资源和数据,则错误将移动到我尝试设置 me = data["me"] (error = "Type Any has no subscript members") 的行。然后,如果我尝试打开包装,错误仍然存​​在。

前任:

打印出数据返回:

0 投票
1 回答
820 浏览

ios - 错误:键入 [AnyHashable: Any]?没有下标成员 (Swift)

我正在尝试使用 Snapchat 的登录工具包来允许用户使用 Snapchat 登录,但他们的文档给了我一个错误。

复制文档会给我一个“类型'[AnyHashable:Any]?' 没有下标成员。错误发生在“let data =”行。如果我强制展开资源,则错误将移至下一行

如果我打开数据资源和数据,则错误将移动到我尝试设置 me = data["me"] 的行(错误 = "Type Any has no subscript members")。然后,如果我尝试打开包装,错误仍然存​​在。

前任:

打印出数据返回:

0 投票
2 回答
134 浏览

swift - 使用 tie 元素按值排序字典不应更改其顺序

我有一个 [String: Int] 类型的字典,它的值是

我想按值和使用方法对字典进行排序

结果

它正在对字典进行排序,但我希望不应该对相同的值进行排序或更改它们的顺序,例如,我想要这个结果

0 投票
0 回答
95 浏览

swift - 符合协议的值字典不明确?

我正在尝试创建一个“转换”协议,如果字典的值实现所述协议,则字典可以遵循该协议。

问题是最后一行被认为是模棱两可的:

我正在尝试做的事情是否可行?我必须更改或添加什么才能使其正常工作?

更新

Type Erasure 似乎是一种“解决方案”。所以基本上,我需要做一些类似的事情:

此时,我现在可以包装/擦除字典文字中的所有内容:

以及将 Dictionary 的扩展改进为 Dictionary 的 Value 为 AnyFoo。这真的比仅仅将字典的扩展限制在 Value 是 String 的情况下并只是做:

对于一个简单的“转换”案例,我不确定使用 TypeErasure 通过包装器延迟转换,而不是在创建字典之前进行转换。后者的实际输入较少(如在字符输入中)。所以我真的没有任何收获。

除非我遗漏了什么,就我而言,我可能只会as? Fooable对容器元素使用向下转换(例如 ),并执行诸如日志错误之类的操作。

0 投票
1 回答
811 浏览

json - 如何使用 Swift 结构正确解码嵌套的 JSON 对象

意图:

通过Coinmarketcap API接收加密货币价格数据,将其解码为 SWIFT 中的自定义结构,并可能将该数据存储在数据库(CoreData 或 SQLite)中。

语境:

我收到以下错误JSONDecoder().decode

问题:

  1. 如何正确解释该错误?我解码错了什么?
  2. 我收到的数据格式是否正确?看起来不像正确的 JSON。

编码:

数据响应和错误:

编辑1:

正确序列化的 JSON:

0 投票
1 回答
491 浏览

nsuserdefaults - 如何使用可编码值对字典进行编码/解码以存储在 UserDefaults 中?

我正在尝试在 iOS UserDefaults 中存储映射到公司对象(来自结构公司)的公司名称(字符串)字典。我创建了 Company 结构并使其符合 Codable。我有一个例子,一位朋友在我的项目中帮助我创建了一个类 Account,并通过创建一个 Defaults 结构(将包括示例代码)将其存储在 UserDefaults 中。我在 swift 文档中读到字典符合 Codable 并且为了保持 Codable,必须包含 Codable 对象。这就是我让 struct Company 符合 Codable 的原因。

我为公司创建了一个符合 Codable 的结构。我尝试使用模型代码创建一个新的结构 CompanyDefaults 来处理公司字典从/到 UserDefaults 的获取和设置。我觉得我对需要发生的事情以及应该如何实施(考虑到良好的设计)有一些初学者误解。

我希望存储的字典看起来像[String:Company] 公司名称将是 String 和 Company 的 Company 对象

我在做一些研究时使用了符合 Codable,它似乎是完成类似任务的新方法。

公司结构

默认结构来控制存储

我应该能够在我的代码中引用存储的字典,例如CompanyDefaults.companies.count

作为参考,一位朋友帮助我对存储在用户默认值中的一组 Account 类执行了类似的任务。完美适用的代码如下。我尝试不同方式的原因是我有不同的数据结构(字典)并决定使用结构。

0 投票
2 回答
112 浏览

arrays - 看起来像字典的数组?

因此,我有一个 plist,其中包含我想在我的项目中访问的许多项目。plist 是一个项目数组,这些项目又是字符串类型的字典:字符串(Item1 -> “name”:“somename”,“description”:“somedescription”)

我只想访问我的项目的名称值,并显示在一个数组中。我设法使用以下代码检索了 plist 中的所有键值对:

通过使用 print(dict) 我可以将所有内容打印到控制台,但是就像我说的那样,我只想要数组中项目的名称。

最让我困惑的是dict等于[[String:String]]类型的NSArray。我不明白数组如何是 String:String 类型的。这对我来说就像一本字典。我尝试将 NSArray 更改为 NSDictionary,但这给了我一个错误提示

“从'NSDictionary'中投射?到不相关的类型 '[[String : String]]' 总是失败”

我也无法利用 dict 的键或值。

0 投票
2 回答
183 浏览

ios - 在 Swift 中显示字典中的一组随机图像和文本

我正在尝试从字典中检索并显示一组随机的图像及其相关文本,单击按钮。

首先,我尝试将图像数组和文本数组分开,并使用Int(arc4random_uniform())从数组中随机选择要显示的元素。它起作用了,但这样做我需要确保图像及其相关文本在它们自己的数组中的相同位置,我认为必须有更好的方法通过将它们组合成多维数组或字典来构造数据。我最终使用了字典,但被卡住了,不知道如何显示图像和文本。

请参阅下面的代码//这是我卡在的位置。我不知道如何从字典中检索图像及其文本。

我不确定是否可以将 myImage 和 myText var 放入字典中,并且不断重复“ myImage ”似乎有点乏味为每个集合 ”、“ myText ”似乎有点乏味。

我也试过而不是使用 myImage.image = .... myText.text = ....

两者都不起作用并显示“构建失败”

我也使用 CoreData 进行了调查,但我是一个菜鸟,这为我打开了另一个关于图像二进制数据与由于图像大小等原因使用 URL 的蠕虫。

任何关于解决上述问题的最佳方法的建议都非常感谢。谢谢。