0

私は現在、正常に動作している単一の画像に対して行いました。しかし、複数の画像を選択してアプリに表示したいのですが、これで私を助けてください。ありがとうございました。

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)
                }
            }
        }
4

1 に答える 1

1

UserDefaults は、画像を保存するのに最適な場所ではないようです..

これを見てください: IOSのUIViewからアプリケーションドキュメントフォルダーに画像を保存する

これは、特定のファイル拡張子を検索する方法です。 ドキュメントフォルダ内のファイル一覧取得

名前を取得したら、これを取得する方法です。 ドキュメント ディレクトリから画像を取得する

于 2017-01-31T22:37:02.227 に答える