Swift 4 Уменьшить проблему: невозможно использовать изменяющийся член для неизменяемого значения: вызов функции возвращает неизменяемое значение - PullRequest
0 голосов
/ 18 октября 2018

Я застрял с

Невозможно использовать мутирующий член для неизменяемого значения: вызов функции возвращает неизменяемое значение

Ошибка на этом фрагменте кода:

var bagsToScan: [BagQR] {
    var initial: [Bag] = []
    return TaskManager.shared.tasks.value
        .filter({ $0.state == .ready })
        .reduce(initial) { (acc, task) in
            var bagQR = task.bags.filter({
                !tasksChecked.contains(BagQR(bag: $0, taskName: task.name).taskName)
            }).map({
                BagQR(bag: $0, taskName: task.name)
            })

            acc.append(contentsOf: bagQR)
        }.sort({ $0.bag.scanIndex < $1.bag.scanIndex })
}

Ошибка печатается в строке reduce(initial) { (acc, task) in.Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 18 октября 2018

Используйте reduce(into:_:)

.reduce(into: initial) { (acc, task) in
//...

Это сделает acc изменяемым.

И используйте sorted(by:) в результатеиз этого сокращения.

.sorted(by: { $0.bag.scanIndex < $1.bag.scanIndex })
...