2017-09-23 65 views
1

在我看來,Swift 4方法鏈接存在問題,或者我完全錯過了某些東西。例如下面的代碼可以完美運行:Swift 4方法鏈接

class test { 
    let id = 10 
} 

var dict: [Int: test] = [10: test()] 

let filtered = dict.filter({ $0.value.id > 10 }) 
let sorted = filtered.sorted(by: {$0.value.id > $1.value.id }) 

可惜,這是不工作...

let filteredAndSorted = dict.filter({ $0.value.id > 10 }).sorted(by: {$0.value.id > $1.value.id }) 

我失去了什麼......的錯誤是:不明確使用「過濾器」

+0

以前的工作方式有所不同嗎? –

+0

是的,它的工作方式如下:'let filteredAndSorted = dict.filter({$ 0.1.id> 10})。sorted(by:{$ 0.1.id> $ 1.1.id})' –

+0

令人驚訝的是,不要鏈接或鏈接這些方法。 –

回答

0

要解決您可以添加的模糊性:
(dict.filter({ $0.value.id > 10 }) as Dictionary).sorted ...

+0

(dict.filter({$ 0.value.id> 10})as Array).sorted ... or Array((dict.filter({$ 0.value.id> 10}))。sorted ... should work太:-)。這很可能,爲什麼編譯器無法決定... – user3441734

+0

OFFTOPIC:@TrevörAnne Denise。你可以看看[鏈接](https://stackoverflow.com/questions/46394748/xcode-9-compiled-app-with-unusual-behaviour) –