小编war*_*rly的帖子

Swift:过滤字典

我想在swift中过滤字典:

var data: [String: String] = [:]
data = data.filter { $0.1 == "Test" }
Run Code Online (Sandbox Code Playgroud)

上面的过滤器代码在swift 2下编译但产生以下错误:

无法将类型'[(String,String)]'的值赋给类型'[String:String]'的值

这是swift编译器中的一个错误,还是这不是在swift中过滤字典的正确方法?

非常感谢你提前!

ios swift

51
推荐指数
3
解决办法
4万
查看次数

Swift:闭包作为参数报告错误

只是写一个简单的swift应用程序,这个错误出现了.

protocol FormDelegate {
    func formDidFinish(form: Form)
}

class Form {
    var delegate: FormDelegate?

    func testClosure(sender: () -> Void) {
    }
}

let form = Form()
form.testClosure {
//      let removeCommentToGetRidOfError = true
    form.delegate?.formDidFinish(form) // error: Cannot convert the expression's type '() -> () -> $T2' to type '()'
}
Run Code Online (Sandbox Code Playgroud)

但是当我插入let语句时,一切正常.有什么想法发生了什么?

swift

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

使用guard检查nil而不隐式展开

我知道周围有一些类似的问题,但我找不到一个特定的问题.我有一个请求,我想检查error密钥的存在.它不存在一切都很好,如果不是我应该处理错误.目前,我实现如下:

if let error = json["error"] {
    // handle error
}
else {
    // handle success
}
Run Code Online (Sandbox Code Playgroud)

我想在这里使用一个保护声明来使成功案例没有缩进.我想出的唯一方法是

guard json["error"] == nil else {
    let error = json["error"]!
    // handle error
} 

// handle success
Run Code Online (Sandbox Code Playgroud)

但这对我来说似乎不对!还有其他方法吗?

swift

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

Swift 包管理器失败:从 XY 返回二进制目标所需的无效存档

在 swift 包管理器中添加 usercentrics 包时,出现以下错误:

invalid archive returned from 'https://bitbucket.org/usercentricscode/usercentrics-spm-sdk/downloads/Usercentrics-2.8.1.xcframework.zip' which is required by binary target 'Usercentrics'

在此输入图像描述

当我在浏览器中下载框架时,它会返回适用于不同平台的有效框架。

框架文件夹

但是,当我尝试这样做时git clone(不确定这是否是测试它的正确方法),它会克隆一个仅包含 package.swift 的文件夹

在此输入图像描述

我尝试删除我可能拥有的任何 bitbucket ssh 密钥或证书。我清理了项目,删除了派生数据并重置了包缓存。不幸的是没有成功。搜索此错误消息也没有产生任何结果。截至目前,usercentrics(如果这是特定于他们的存储库的)也可能无法提供此问题的解决方案。

任何帮助是极大的赞赏。

xcode bitbucket swift-package-manager matlab-spm

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