串!不符合协议'ExpressibleByStringLiteral'

时间:2016-10-06 19:38:16

标签: objective-c swift3

我正在尝试使用一个定义为Objective C方法的方法,来自swift文件

目标c中的方法定义为

-(instancetype) init:(NSString*)string data:(id)data;

方法名称无法重构。

我试图按如下方式调用它

let myObject = MyObject("MyString",data:["1","2","3"])

作为回报我收到编译错误:“String! does not conform to protocol 'ExpressibleByStringLiteral'

我该如何解决?

编辑:

MyObject定义如下

`@interface MyObject<__covariant Type> : NSObject @end

@implementation

@end`

2 个答案:

答案 0 :(得分:1)

在Swift 3中,ObjC泛型作为Swift泛型导入。而且你总是需要在Swift泛型中指定type参数。 (而Swift 3还没有那么精致,无法生成适当的诊断......)

let myObject = MyObject<NSString>("MyString",data:["1","2","3"])

的工作。

答案 1 :(得分:0)

您的数据实际上是数据还是[String]?

相关问题