【发布时间】:2015-08-06 10:11:32
【问题描述】:
我需要重写一个 Objective-C 块但我不能
这是有问题的块:
[service executeQuery:query completionHandler:^(GTLServiceTicket *ticket, GTLDriveFileList* files, NSError *error) {
}];
在 Swift 中,我尝试过:
service.executeQuery(query, completionHandler: {(ticket:GTLServiceTicket!,files:GTLDriveFileList!,error:NSError!) -> Void in
})
但编译器不同意这一点。
我试过了:
service.executeQuery(query, completionHandler: {(ticket:GTLServiceTicket?,files:GTLDriveFileList?,error:NSError?) -> () in
})
但同样的问题。
当我 cmd+点击类时,我发现:
// Clients should create a standard query with any of the class methods in
// GTLQueryDrive.h. The query can the be sent with GTLService's execute methods,
//
// - (GTLServiceTicket *)executeQuery:(GTLQuery *)query
// completionHandler:(void (^)(GTLServiceTicket *ticket,
// id object, NSError *error))handler;
有人知道怎么做吗?
谢谢
【问题讨论】:
-
service.executeQuery(query) { (ticket, object, error) -> () in /* ... your task comes here ... */ };,也许……? -
将
files:GTLDriveFileList更改为files:AnyObject! -
它可以工作,但我需要文件具有 GTLQueryDriveFileList 类型,因为在我需要使用 files.items.count 之后,如果文件没有类型,则不存在。
标签: ios objective-c swift closures objective-c-blocks