2017-06-19 33 views
0

什麼是錯的:不能調用非函數類型的值'(key:Int,value:CallSession)?'

func findCallByUUID(uuid: UUID) -> CallSession? { 
    let foo = [Int: CallSession]() 
    return foo.first(where: { (id: Int, session: CallSession) in 
     session.uuid == uuid 
    }) 
} 

好吧,我不需要id但我想知道如何使用first用字典。

這工作得很好:

return foo.values.first(where: { (session) in session.uuid == uuid }) 
+0

字典不應該被排序,所以不是一個真正的 「第一」。 – Larme

+0

@Larme'first' _is_在Swift字典中可用(它將每個元素的鍵和值傳遞給過濾器)... – Alladinian

+0

我可以在您的代碼片段中發現的一個問題是,您應該返回一個' CallSession?',但是你可以返回一個'(key:Int,value:CallSession)?'(一個來自字典元素的鍵/值對)。也許像'return foo.first(其中:{ id:Int,session:CallSession) session.uuid == uuid })?value是你打算做什麼的? – Alladinian

回答

0

由於@Alladinian

func findCallByUUID(uuid: UUID) -> CallSession? { 
    let foo = [Int: CallSession]() 
    return foo.first(where: { (id: Int, session: CallSession) in 
      session.uuid == uuid 
     }) 
     .map { (id: Int, session: CallSession) in 
      session 
     } 
} 
相關問題