Ios Swift不能调用';someFunction';具有类型为';(某些类型,块($T9)——>;

Ios Swift不能调用';someFunction';具有类型为';(某些类型,块($T9)——>;,ios,swift,block,firebase,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,

我正在从事一个使用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)
})
错误:

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

我很确定这是因为编译器没有正确识别块或快照的类型,但我不知道如何结合块来解决这个问题

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

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

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

withBlock: {
(snapshot: SnapshotType) in 
    yourCode()
}
如果块返回一个值,则需要将其修改为:

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

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

withBlock: {
(snapshot: SnapshotType) in 
    yourCode()
}
如果块返回一个值,则需要将其修改为:

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

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

withBlock: {
(snapshot: SnapshotType) in 
    yourCode()
}
如果块返回一个值,则需要将其修改为:

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

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

withBlock: {
(snapshot: SnapshotType) in 
    yourCode()
}
如果块返回一个值,则需要将其修改为:

withBlock: {
(snapshot: SnapshotType) -> ReturnType in 
尝试用
UInt(limit)
代替
limit作为UInt

我不确定您的情况下
limit
是什么类型,但当
limit
是一个
Int
时,我能够得到一个类似的错误。进行替换为我解决了这个问题。

尝试
UInt(limit)
代替
limit as UInt

我不确定您的情况下
limit
是什么类型,但当
limit
是一个
Int
时,我能够得到一个类似的错误。进行替换为我解决了这个问题。

尝试
UInt(limit)
代替
limit as UInt

我不确定您的情况下
limit
是什么类型,但当
limit
是一个
Int
时,我能够得到一个类似的错误。进行替换为我解决了这个问题。

尝试
UInt(limit)
代替
limit as UInt


我不确定您的情况下是什么类型的
limit
,但当
limit
Int
时,我能够得到一个类似的错误。进行替换为我解决了这个问题。

我尝试过,但它只是将错误更改为“无法调用…witBlock:(FDataSnapshot)->(FDataSnapshot)->$T8)'另外,我将方法主体添加到原始帖子中。我尝试了,但它只是将错误更改为'cannotinvoke…witBlock:(FDataSnapshot)->(FDataSnapshot)->$T8''另外,我将方法主体添加到原始帖子中。我尝试了,但它只是将错误更改为'cannotinvoke…witBlock:(FDataSnapshot)->(FDataSnapshot)->(FDataSnapshot)->$T8)“另外,我在原始帖子中添加了方法主体。我尝试了,但它只是将错误更改为“无法调用…”。。。witBlock:(FDataSnapshot)->(FDataSnapshot)->$T8)“另外,我将方法体添加到原始帖子中。