动态处理多维数组作为 UIImage 数组
Posted
技术标签:
【中文标题】动态处理多维数组作为 UIImage 数组【英文标题】:Work with multi-diminutional array dynamically as UIImage array 【发布时间】:2015-08-03 11:40:30 【问题描述】:我正在开发应用程序来在滚动视图中制作分页照片,就像在照片应用程序中一样,向右滑动以获取旧照片,向左滑动以获取新照片,直到照片结束。
好的,所以我从网络上以多维度的形式获取照片:
imageArray[indexPath.row][0] as? String
在 ViewController1
中显示 CollectionView 中的所有图像。
当用户按下照片时,我会继续并在ViewController2
中显示更大的图像,因此如果向左滑动它会显示新照片,向右滑动会显示存储在数组中的旧照片。
但我需要将我的二维数组转换为一个并动态使用它来像这样:
pageImages = [UIImage(named:"photo1.png")!,
UIImage(named:"photo2.png")!,
UIImage(named:"photo3.png")!,
UIImage(named:"photo4.png")!,
UIImage(named:"photo5.png")!]
怎么可能呢?
我可以这样说:
pageImages = [UIimage(named:thewholearray)]
?
我首先尝试转换为一维数组,但失败了:
var imageArray : NSArray = []
var mybigarray : NSArray = []
for (var i=0; i<=self.imageArray.count; i++)
self.mybigarray = self.imageArray[i][0] as! NSArray
产生这个转换错误:
Could not cast value of type '__NSCFString' (0x196806958) to 'NSArray' (0x196807308).
【问题讨论】:
【参考方案1】:您可以使用 map 函数从多维数组中提取图像名称。
var imageNames:[String] = imageArray.map(
$0[0] as! String
)
map 函数像 for-in-loop 一样遍历所有数组条目。 闭包中的语句确定 imageNames 数组的新条目。
编辑:
如果你不使用 Swift-Arrays:
var imageNames:NSMutableArray = []
for image in imageArray
imageNames.addObject(image[0] as! String)
【讨论】:
NSArray 没有名为 map 的成员? 太好了,最后一件事如果我需要使用 imageNames 作为 UIImage 数组作为我的问题,怎么可能? imageNames.addObject(UIImage(named: "\(image[0] as!String)")!) @AaoIi,我写的是图片。我不明白你还想要什么。 请澄清您的问题【参考方案2】:我查看了教程,我认为这将有助于 Daniel 的回答。保留 Daniel 的答案并使用带有扩展名的数组中的 URL。 添加它以从 URL 中创建图像
extension UIImageView
public func imageFromUrl(urlString: String)
if let url = NSURL(string: urlString)
let request = NSURLRequest(URL: url)
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue())
(response: NSURLResponse!, data: NSData!, error: NSError!) -> Void in
if data != nil
self.image = UIImage(data: data)
else
self.image = UIImage()
在 PagedImageScrollViewController 中使用它:
newPageView.imageFromUrl(pageImages[page])
pageImages 是您的字符串数组。
【讨论】:
当然我会保留它,我正在使用 SDWebImage 库来显示图像,那么如何在没有扩展的情况下做到这一点? github.com/rs/SDWebImage,我试着像let newPageView = UIImageView(image: pageImages[page] as! UIImage) newPageView.sd_setImageWithURL(url)
那样做,但它说 Could not cast value of type '__NSCFString' (0x196806958) to 'UIImage' (0x19746a698).
对不起,我对 SDWebImage 库不熟悉。该错误看起来像是因为您的 pageImages 是一个字符串数组,并且您试图将字符串设置为图像。如果您找不到解决方案,我可以稍后再查看 SDWebImage 库。也许您可以操纵扩展以满足您的需求?以上是关于动态处理多维数组作为 UIImage 数组的主要内容,如果未能解决你的问题,请参考以下文章