Swift无法使用类型'的参数列表调用'someFunction'(SomeType,Block(($ T9) - >

时间:2014-12-02 19:37:02

标签: ios swift block firebase

我正在开发一个使用Swift和Firebase API的iOS项目 不知怎的,我在这个查询上收到以下错误:

ref.queryOrderedByKey().queryLimitedToFirst(limit as UInt)
   .observeSingleEventOfType(FEventType.Value, withBlock: { 
       snapshot in

       var n = News(
             snapshot.key,
             snapshot.value["value1"] as? String,
             snapshot.value["value2"] as? String,
             snapshot.value["value3"] as? Int)

       result!.append(n)
})

错误:

  

无法使用类型'的参数列表调用'observeSingleEventOfType'(FEventType,withBlock:(($ T9) - >($ T9) - >§T8) - >(($ T9) - >( $ T9) - >§T8)'

我很确定这是因为编译器无法正确识别块或快照类型,但我不知道如何将其与块结合使用。

更新
被调用函数的Objective-C Header如下所示:

  
      
  • (void)observeSingleEventOfType:(FEventType)eventType withBlock:(void(^)(FDataSnapshot * snapshot))block;
  •   

2 个答案:

答案 0 :(得分:3)

尝试UInt(limit)代替limit as UInt

我不确定您的案例中的limit类型是什么,但当limitInt时,我能够收到类似的错误。做替换修复了我的问题。

答案 1 :(得分:0)

我不熟悉Firebase API,但您可以(也可能应该)在块中定义快照类型,如下所示:

withBlock: {
(snapshot: SnapshotType) in 
    yourCode()
}

如果块返回一个值,则需要将其修改为:

withBlock: {
(snapshot: SnapshotType) -> ReturnType in