无法使用类型为((String)'的参数列表调用'schema'

时间:2019-01-24 13:41:52

标签: objective-c swift

我无法将某些Objective C转换为Swift。

iCloudSchemaDatabase *sdb = [self schema: @"33"];

我不知道问题出在哪里,我尝试过各种尝试,并寻找原因,显然我需要传递一个字符串,但是没有任何作用...

var x = self.iCloudDBDelegate.schema("")

let sdb = self.iCloudDBDelegate.schema("33")

模式来自Objective C协议

@protocol iCloudDBDelegate<NSObject>

@required
@property (weak,nonatomic) id<iCloudDBDelegate>iCloudDBDelegate;

@optional
-(iCloudSchemaDatabase*)schema:(NSString*)calledBy;

@end

协议将其添加到我的swift文件中。

public var iCloudDBDelegate: iCloudDBDelegate!

2 个答案:

答案 0 :(得分:0)

这是答案,非常惊讶...

let sdb = iCloudDBDelegate!.schema!("33")

答案 1 :(得分:0)

未经处理,您将无法调用schema方法:

  1. 委托属性为nil
  2. 委托未实现schema方法的情况(因为这样做是可选的)。

妥善处理这两个问题看起来像这样:

//       because `schema` may not be implemented 
//                                            | 
//       because the delegate may be `nil`    | 
//                                    |       | 
//                                    v       v 
if let schemaResult = iCloudDBDelegate?.schema?("33") {
    // do something with the result of calling schema
} else {
    // either the delegate is `nil` or it doesn't implement `schema`.
}