2017-06-19 31 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 
     } 
} 
相关问题