在Swift中声明一个Objective-C方法的问题

时间:2016-04-12 19:11:31

标签: ios objective-c swift

我正在尝试使用用Swift编写的iOS应用程序使用FCOfflineQueue(一种用于在离线时排队网络请求的持久框架)。我应该继承FCOfflineQueue类并在我的子类中重写以下方法 -

- (BOOL)executeOperation:(int64_t)opcode userInfo:(NSDictionary *)userInfo;

在我自己的队列中,我从FCOfflineQueue继承了,在Swift中声明这个问题时遇到了麻烦。我正在做以下事情 -

override func executeOperation(opcode: Int64, userInfo: NSDictionary) -> Bool

它说 - 这个方法不会覆盖其超类中的任何方法。

如果我做了以下 -

@objc override func executeOperation(opcode: Int64, userInfo: NSDictionary) -> Bool

它说 - 使用选择器'executeOperation:userInfo:'的覆盖方法具有不兼容的类型'(Int64,NSDictionary) - >布尔“

我认为int64_t相当于Swift中的Int64。这与转换有关吗?

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

尝试覆盖如下:

override func executeOperation(opcode: Int64, userInfo: [NSObject : AnyObject]!) -> Bool {
    return false
}
  

从具有参数化类型的NSDictionary对象桥接时   对于Swift字典,生成的字典是类型的   [对象类型。如果NSDictionary对象未指定参数化   类型,它被桥接到[NSObject类型的Swift字典:   AnyObject]。

https://developer.apple.com/library/mac/documentation/Swift/Conceptual/BuildingCocoaApps/WorkingWithCocoaDataTypes.html