我正在开发一个使用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;
答案 0 :(得分:3)
尝试UInt(limit)
代替limit as UInt
。
我不确定您的案例中的limit
类型是什么,但当limit
为Int
时,我能够收到类似的错误。做替换修复了我的问题。
答案 1 :(得分:0)
我不熟悉Firebase API,但您可以(也可能应该)在块中定义快照类型,如下所示:
withBlock: {
(snapshot: SnapshotType) in
yourCode()
}
如果块返回一个值,则需要将其修改为:
withBlock: {
(snapshot: SnapshotType) -> ReturnType in