Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何将阵列的所有图像转换为数据_Ios_Swift - Fatal编程技术网

Ios 如何将阵列的所有图像转换为数据

Ios 如何将阵列的所有图像转换为数据,ios,swift,Ios,Swift,我正在尝试将数组中的图像转换为NSData,以便通过segue方法将其传递给另一个视图控制器 我已尝试通过NSDataRepresentation方法成功地将单个图像转换为NSData。但在尝试对资产映像执行此操作时,我发现很难访问阵列的映像。目前,我可以访问阵列的第一个或最后一个图像,但需要所有图像进行转换 @IBAction func doneButton(_ sender: UIButton) { let imageData_1 : NSData = UIImagePNGRepre

我正在尝试将数组中的图像转换为NSData,以便通过segue方法将其传递给另一个视图控制器

我已尝试通过NSDataRepresentation方法成功地将单个图像转换为NSData。但在尝试对资产映像执行此操作时,我发现很难访问阵列的映像。目前,我可以访问阵列的第一个或最后一个图像,但需要所有图像进行转换

@IBAction func doneButton(_ sender: UIButton) {
    let imageData_1 : NSData = UIImagePNGRepresentation(photoArray.last!)! as NSData
    photoImageData.append(imageData_1)
    performSegue(withIdentifier: "toBodyViewPage", sender: self)
}
你可以试试

@Action func doneButton(_ sender: UIButton) {
   photoImageData = photoArray.compactMap { UIImagePNGRepresentation($0) }
   performSegue(withIdentifier: "toBodyViewPage", sender: self)
}
对于xcode 10+和swift 4.2

photoImageData = photoArray.compactMap {  $0.pngData() }
你可以试试

@Action func doneButton(_ sender: UIButton) {
   photoImageData = photoArray.compactMap { UIImagePNGRepresentation($0) }
   performSegue(withIdentifier: "toBodyViewPage", sender: self)
}
对于xcode 10+和swift 4.2

photoImageData = photoArray.compactMap {  $0.pngData() }

看起来您使用的是旧版本的swift,它是用xcode编译的吗?顺便说一句,如果现在不强制更新就更好了为什么你甚至需要转换图像,你不能直接传递它们或者给它们一条路径吗?为什么是NSData而不是像photoArray.last.pngData()那样的
数据
?使用
photoArray
访问所有元素到底有什么问题?@JoakimDanielson如何访问所有元素。我只能访问数组的第一个和最后一个元素。另外,我玩swift代码的时间不长。您在photoArray中使用
for
循环,
for item{let data=item.pngData()?顺便说一句,如果现在不强制更新就更好了为什么你甚至需要转换图像,你不能直接传递它们或者给它们一条路径吗?为什么是NSData而不是像photoArray.last.pngData()那样的
数据
?使用
photoArray
访问所有元素到底有什么问题?@JoakimDanielson如何访问所有元素。我只能访问数组的第一个和最后一个元素。另外,我使用swift代码的时间不长。您在photoArray{let data=item.pngData()'没有
photoArray
的成员'compactMap'共享声明,并且您最新的tryi use 4.0 swift和flatMap被降级为compactMap.var photoArray=[UIImage]()var photoImageData=[NSData]()'flatMap'生成'[String]',而不是预期的上下文结果类型'[NSData]“这是我在使用flatMap for compactMapI后得到的结果。我得到的答案是:“[UIImage]”类型的值没有
photoArray
的成员“compactMap”共享声明,并且您最新的tryi使用4.0 swift,flatMap被降级为compactMap.var photoArray=[UIImage]()var photoImageData=[NSData]()“flatMap”生成“[String]”,而不是预期的上下文结果类型“[NSData]”。这是我在使用flatMap for compactMap后得到的结果