无法使用类型为“(数组:[NSData?])”的参数列表调用类型“NSSet”的初始化程序

Posted

技术标签:

【中文标题】无法使用类型为“(数组:[NSData?])”的参数列表调用类型“NSSet”的初始化程序【英文标题】:Cannot invoke initializer for type 'NSSet' with an argument list of type '(array: [NSData?])' 【发布时间】:2015-10-02 10:51:18 【问题描述】:

更新到 swift 2.0 时出现此错误:

我已经进行了搜索,但仍然无法修复它。

var object:UIImageView = UIImageView(frame: CGRectMake(0, 0, result.size.width, result.size.height))
object.image = UIImage(named: "image_default")
let element = NSEntityDescription.insertNewObjectForEntityForName("XKIMAGEVIEW", inManagedObjectContext: CoreDataUtil.sharedInstance.managedObjectContext!) as! XKIMAGEVIEW
element.image = NSSet(array:[UIImageJPEGRepresentation(object.image!, 1)])

最后一行有错误 好像 NSData 不能包含在数组中

知道如何解决这个问题吗?

【问题讨论】:

【参考方案1】:

UIImageJPEGRepresentation 返回一个可选项,NSSet 不接受可选项。 只需打开可选的:

NSSet(array:[UIImageJPEGRepresentation(object.image!, 1)!])

或者,如果图像表示可以是nil,则使用可选绑定

if let imageData = UIImageJPEGRepresentation(object.image!, 1) 
  element.image = NSSet(array:[imageData])

【讨论】:

以上是关于无法使用类型为“(数组:[NSData?])”的参数列表调用类型“NSSet”的初始化程序的主要内容,如果未能解决你的问题,请参考以下文章

转换为 Swift3 错误

Java 函数的参数说

可以在C ++中使用动态分配的参数数创建函数吗?

九-2方法的使用

重写和重载

正确的参数数