【问题标题】:Swift - Array of dictionary insert into another arraySwift - 字典数组插入另一个数组
【发布时间】:2016-12-09 08:17:04
【问题描述】:

我声明

let ay: [String:String] = ["key1":"verios", "key2":"fdsf"]
var array = ["apple", "banana", "dragonfruit"]

当我使用时

array.insert(ay, at:2)

array = ay + array

会有错误:

错误:函数和方法.xcplaygroundpage:22:14:错误:不能 将 '[String : String]' 类型的值转换为预期的参数类型 '字符串'

我是 swift 的新手。我想在目标 c 中执行以下代码。

NSDictionary *dict = @{
                       @"Key1" : @NO,
                       @"Key2" : @1.0f,
                       @"Key3" : @"String",
                       };

NSMutableArray *ary = @[@"sad", @"and", @"cry"];
NSArray *ay = @[dict, dict, dict];
[ary insertObject:ay atIndex:2];

但我无法在 Swift 中实现这一点。

【问题讨论】:

  • 您能告诉我们您为什么要这样做吗?将数组类型更改为[Any] 确实可以让您这样做,但这不太可能是您真正想要做的。
  • @overactor 其实我只是在学习。我的想法是将响应对象从 JSON 管理到一些易于访问的字典。

标签: objective-c arrays swift dictionary insert


【解决方案1】:

您的数组是[String] 类型,当您插入ay 类型为[String:String] 时,它会给您错误..

所以只需将数组类型更改为[Any] 就像

 var array:[Any] = ["apple", "banana", "dragonfruit"]

最终代码:

let ay: [String:String] = ["key1":"verios", "key2":"fdsf"]
var array:[Any] = ["apple", "banana", "dragonfruit"]

array.insert(ay, at:2)

print(array)  //Result :  ["apple", "banana", ["key1": "verios", "key2": "fdsf"], "dragonfruit"]

【讨论】:

  • 哦!就是这样!谢谢!
  • Is let ay: [String:String] = ["key1":"verios", "key2":"fdsf"] 和 Objective C 中的 NSDictionary 一样吗?
【解决方案2】:

您必须使用 Any...

 let ay: [String:String] = ["key1":"verios", "key2":"fdsf"]
    var array : [Any] = ["apple", "banana", "dragonfruit"]

    array.append(ay)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-19
    • 1970-01-01
    • 2018-03-24
    • 1970-01-01
    • 2014-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多