【发布时间】:2017-01-31 07:45:02
【问题描述】:
我目前为单张图片做的,效果很好。但我想选择多个图像并在应用程序中显示。任何人都可以帮助我。谢谢。
override func didSelectPost() {
if let content = extensionContext!.inputItems[0] as? NSExtensionItem {
let contentType = kUTTypeImage as String
if let contents = content.attachments as? [NSItemProvider] {
for attachment in contents {
if attachment.hasItemConformingToTypeIdentifier(contentType) {
attachment.loadItemForTypeIdentifier(contentType, options: nil) { data, error in
let url = data as! NSURL
if let imageData = NSData(contentsOfURL: url) {
self.saveImage(imageData)
}
}
}
}
}
}
// Unblock the UI.
self.extensionContext!.completeRequestReturningItems([], completionHandler: nil)
}
将图像保存为用户默认值
func saveImage(imageData: NSData) {
if let prefs = NSUserDefaults(suiteName: suiteName) {
prefs.setObject(imageData, forKey: keyName)
}
}
在应用中阅读
if let prefs = NSUserDefaults(suiteName: suiteName) {
if let imageData = prefs.objectForKey(keyName) as? NSData {
drawCard(imageData)
}
}
我为数组修改了这个,但它不起作用。
override func didSelectPost() {
if let content = extensionContext!.inputItems[0] as? NSExtensionItem {
let contentType = kUTTypeImage as String
if let contents = content.attachments as? [NSItemProvider] {
for attachment in contents {
if attachment.hasItemConformingToTypeIdentifier(contentType) {
attachment.loadItemForTypeIdentifier(contentType, options: nil) { data, error in
let url = data as! NSURL
if let imageData = NSData(contentsOfURL: url) {
galleryBucket[url] = imageData
self.saveImage(galleryBucket)
}
}
}
}
}
}
// Unblock the UI.
self.extensionContext!.completeRequestReturningItems([], completionHandler: nil)
}
将图像保存为用户默认值。
func saveImage(galleryBucket: [NSURL:NSData]) {
if let prefs = NSUserDefaults(suiteName: suiteName) {
prefs.setObject(galleryBucket, forKey: keyName)
}
}
galleryBucket 的结果是 nil
if let prefs = NSUserDefaults(suiteName: suiteName) {
if let galleryBucket = prefs.objectForKey(keyName) as? [NSURL:NSData] {
for imageData in galleryBucket{
drawCard(imageData.1)
}
}
}
【问题讨论】:
-
为什么不只保存一个 NSData 数组来存储图像数组?
-
@BenjaminLowry 请检查已编辑的问题,我做错了什么吗?
-
我不知道你在用
drawCard(imageData.1)做什么,因为我不相信 imageData 是一个元组,但除此之外它看起来还不错。我能想到的唯一会导致它为零的是如果您的suiteName或keyName变量发生了变化。 -
drawCard(imageData.1) 会动态创建imageview,suiteName和keyName完全一样。
标签: ios swift image swift2.3 share-extension