相关疑难解决方法(0)

在Swift中使用Map来更改自定义结构属性

我定义了以下结构.

struct Person {

    var firstName :String
    var lastName :String
    var active :Bool
}
Run Code Online (Sandbox Code Playgroud)

我创建了一个Person集合,如下所示:

var persons :[Person] = []

for var i = 1; i<=10; i++ {

    var person = Person(firstName: "John \(i)", lastName: "Doe \(i)", active: true)
    persons.append(person)
}
Run Code Online (Sandbox Code Playgroud)

现在我尝试使用下面的代码将活动属性更改为false:

let inActionPersons = persons.map { (var p) in

    p.active = false
    return p
}
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

Cannot invoke map with an argument list of type @noescape (Person) throws
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

解:

看起来Swift无法推断类型有时候有点蹩脚!这是解决方案:

let a = persons.map { (var p) -> …
Run Code Online (Sandbox Code Playgroud)

ios swift

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

标签 统计

ios ×1

swift ×1