相关疑难解决方法(0)

Swift:如何组合两个Dictionary实例?

如何添加一个Dictionary到另一个Dictionary使用Swift

我正在使用该AlamoFire库发送JSONREST server.

字典1

var dict1: [String: AnyObject] = [
            kFacebook: [
                kToken: token
            ]
        ]
Run Code Online (Sandbox Code Playgroud)

字典2

var dict2: [String: AnyObject] = [
        kRequest: [
            kTargetUserId: userId
        ]
    ]
Run Code Online (Sandbox Code Playgroud)

如何将两个词典组合成一个新词典,如下所示?

let parameters: [String: AnyObject] = [
        kFacebook: [
            kToken: token
        ],
        kRequest: [
            kTargetUserId: userId
        ]
    ]
Run Code Online (Sandbox Code Playgroud)

我试过dict1 += dict2但得到了编译错误.

提前致谢!

xcode json dictionary ios swift

50
推荐指数
7
解决办法
4万
查看次数

关闭元组不支持Xcode 9 Swift 4中的解构

在Xcode 9中为Swift 4进行光泽项目之后

我得到以下错误,我不知道

闭包元组参数'(key:_,value:_)'不支持解构

码:

extension Dictionary
{
    init(elements: [Element]) {
        self.init()
        for (key, value) in elements {
            self[key] = value
        }
    }

    func flatMap<KeyPrime, ValuePrime>(_ transform: (Key, Value) throws -> (KeyPrime, ValuePrime)?) rethrows -> [KeyPrime:ValuePrime] {
        return Dictionary<KeyPrime, ValuePrime>(elements: try flatMap({ (key, value) in
            return try transform(key, value)
        }))
    }
}
Run Code Online (Sandbox Code Playgroud)

此时出现错误 try flatMap({ (key, value)in

ios swift swift4 xcode9-beta

30
推荐指数
3
解决办法
1万
查看次数

如何在Swift中"追加"到不可变字典?

在Scala中,+ (k -> v) 运算符on immutable.Map返回包含immutable.Map原始内容的新内容以及新的键/值对.同样,在C#中,ImmutableDictionary.add(k, v)返回一个新的,更新的ImmutableDictionary.

然而,在Swift中,Dictionary似乎只有变异updateValue(v, forKey: k)函数和变异[k:v]运算符.

我想也许我可以玩一些技巧flatten(),但没有运气:

let updated = [original, [newKey: newValue]].flatten()
Run Code Online (Sandbox Code Playgroud)

抓住我

Cannot convert value of type '() -> FlattenCollection<[[String : AnyObject]]>' 
to specified type '[String : AnyObject]'
Run Code Online (Sandbox Code Playgroud)

如何Dictionary从现有内容创建一个新的,修改过的不可变的?


更新:根据这个答案的说明,Swift字典是值类型,这个答案的可变版本,我想出了以下扩展运算符,但我对此并不感兴趣 - 似乎必须有一个更清洁的开箱即用的替代方案.

func + <K, V>(left: [K:V], right: [K:V]) -> [K:V] {
    var union = left
    for (k, v) in right …
Run Code Online (Sandbox Code Playgroud)

functional-programming immutability swift

10
推荐指数
1
解决办法
2875
查看次数

Xcode Beta 6.1和Xcode 6 GM因为奇怪的原因而陷入索引

我正在开发一个快速的应用程序,在某些时候我有一个类似于此的代码:

 import UIKit

class ViewController: UIViewController {
    private var a: UIImageView!
    private var b: UIImageView!
    private var c: UILabel!
    private var d: UILabel!
    private var e: UILabel!
    private var f: UILabel!
    private var g: UIView!
    private var h: UIView!
    private var i: UIView!
    private var j: UIView!
    private var k: UIImageView!
    private var l: UIView!
    private var m: UIView!
    private var n: UIView!
    private var o: UIView!
    private var p: UIScrollView!
    private var q: UIView!

    override func viewDidLoad() {
        super.viewDidLoad() …
Run Code Online (Sandbox Code Playgroud)

xcode swift xcode6

5
推荐指数
1
解决办法
6900
查看次数

在NSUserDefaults中存储字典并使用存储的数据.

我一直在努力解决这个问题5天.可不是闹着玩的.请帮忙!这是我遇到的问题.

我知道的:

我宣布var addressDict = Dictionary<Int, Array<String>>()为全局变量.现在,我了解下面的代码用于附加存储在addressDict中的数据并更改类型,以便将数据存储到NSUserDefaults中.

let data = NSKeyedArchiver.archivedDataWithRootObject(addressDict) //archiving
self.defaults.setObject(data, forKey: "addressDict") //storing
if let data2 = self.defaults.objectForKey("addressDict") as? NSData { 
     let addressDict2 = NSKeyedUnarchiver.unarchiveObjectWithData(data2)
}
Run Code Online (Sandbox Code Playgroud)

现在,每次运行应用程序时,存储的数据addressDict2都会被我覆盖,addressDict因为当应用程序启动时,没有数据存在addressDict.因此即使我可能已经添加了一些数据addressDict2,它也会被覆盖,addressDict因为它没有数据.

所以为了解决这个问题,我可以运行上面的代码,但没有行,self.defaults.setObject(data, forKey: "addressDict")现在,addressDict2不再被不包含数据的变量覆盖了addressDict.所以我追加的数据存储在addressDict2.但是,如果我这样做,我就不能再添加新信息,addressDict2因为我已经self.defaults.setObject(data, forKey: "addressDict")没有了.我希望你能在这里看到我的困境......

我想知道的:

这就是我希望我的代码要做的事情.我希望能够将新信息附加到某个变量中addressDict2.当应用程序启动时,我希望将addressDict2要复制的数据复制到其中addressDict.因此,这将导致addressDict保存我希望它保留的数据.

我尝试过的:

为了试图解释我的意思,这里有一些代码.请注意,这段代码不起作用,只是为了澄清我的意思,并表明以下代码是否有效,它会解决我的问题,我想(如果我错了请纠正我).所以在我viewDidLoad(),我会如下:

override func viewDidLoad() …
Run Code Online (Sandbox Code Playgroud)

nsdictionary nsuserdefaults ios swift

5
推荐指数
1
解决办法
220
查看次数

在Swift中连接两个词典

Swift给了我们很多新的能力,比如(最后!)连接字符串甚至是数组.但不支持词典.连接字典的唯一方法是为它们重载+操作吗?

let string = "Hello" + "World" // "HelloWorld"
let array = ["Hello"] + ["World"] // ["Hello", "World"]
let dict = ["1" : "Hello"] + ["2" : "World"] // error =(
Run Code Online (Sandbox Code Playgroud)

dictionary concatenation swift

5
推荐指数
2
解决办法
1万
查看次数

Firebase RTD,原子“移动”……从两个“表”中删除和添加?

在 Firebase 实时数据库中,这是一个非常常见的事务性事物

  • “表” A - 将其视为“待定”
  • “表” B - 将其视为“结果”

发生某种状态,您需要将项目从 A“移动”到 B。

所以,我当然是说这可能是一个云功能。

显然,这个操作必须是原子的,你必须注意赛道效应等等。

所以,对于项目 123456,你必须做三件事

  • 阅读 A/123456/
  • 删除 A/123456/
  • 将值写入 B/123456

所有原子,带锁。

简而言之,Firebase 实现这一目标的方法是什么?

  • 已经有很棒的 ref.transaction 系统,但我认为它与这里无关。

  • 也许以一种变态的方式使用触发器?

IDK


对于在这里谷歌搜索的任何人来说,值得注意的是令人难以置信的新 Firestore(很难想象有什么比传统 Firebase 更令人难以置信的东西,但你有它......),新的 Firestore 系统内置了. ......

在此处输入图片说明

这个问题是关于传统的 Firebase Realtime 的。

firebase firebase-realtime-database

3
推荐指数
1
解决办法
697
查看次数

在swift中将字典添加到字典中

根据这个页面,可以将一个完整的字典添加到另一个 http://code.tutsplus.com/tutorials/an-introduction-to-swift-part-1--cms-21389

但运行代码给了我编译错误

var dictionary = ["cat": 2,"dog":4,"snake":8]; // mutable dictionary
dictionary["lion"] = 7; // add element to dictionary
dictionary += ["bear":1,"mouse":6]; // add dictionary to dictionary
Run Code Online (Sandbox Code Playgroud)

错误:

[string: Int] is not identical to UInt8
Run Code Online (Sandbox Code Playgroud)

是否有正确的方法在swift中执行此功能?我应该逐一添加它们?

dictionary ios swift

1
推荐指数
1
解决办法
4877
查看次数

合并两个字典

我正在学习 Swift,但找不到解决我的问题的方法......

我有两个字典并想将它们合并:

dict1 = ["A": 1, "B": 2, "D": 5]
dict2 = ["A": 3, "C": 9, "D": 4]
Run Code Online (Sandbox Code Playgroud)

结果应该是一个新的字典,例如:

dict3 = ["A": 4, "B": 2, "C": 9, "D": 9]
Run Code Online (Sandbox Code Playgroud)

arrays dictionary addition swift

0
推荐指数
1
解决办法
1233
查看次数