簡體   English   中英

獲取保存在 CoreData 中的 NSData 的 URL

[英]get the URL for NSData saved in CoreData

我正在將 UIImage 保存到核心數據。 所以首先,我將它轉換為 NSData,然后保存它。

我需要在保存后獲取圖像的 URL。 我這樣做是因為我想安排一個帶有附件的本地通知,而唯一的方法,AFAIK,就是使用 URL。

這是我的代碼:

//my image:  
var myImage: UIImage?
var imageData: NSData?
    if let image = myImage {
    imageData = UIImageJPEGRepresentation(image, 0.5)! as NSData
}
myEntity.setValue(imageData, forKey: "image")

這就是我應該向通知添加附件的方式:
UNNotificationAttachment.init(identifier: String, url: URL>, options: [AnyHashable : Any]?)

當用戶點擊按鈕保存圖像時,我正在保存圖像並手動安排通知。

如果您需要額外的信息,請告訴我。

您無法獲取網址。 如果您將此屬性配置為使用外部存儲,那么是的,從技術上講,可能存在文件 URL。 也許。 但是沒有記錄在案的方法來獲取它,無論如何它可能根本不存在——因為外部存儲設置不需要 Core Data 使用外部存儲,它只是允許它這樣做。

如果您沒有使用該設置,則永遠不會有任何 URL,因為圖像被保存為 SQLIte 文件的一部分。

如果您需要圖像的文件 URL,請將圖像保存到與 Core Data 分開的文件中,並將文件名保存為實體屬性。 然后文件 URL 是您保存文件的位置。

以及當我遇到同樣的挑戰時我如何保存它然后在實踐中獲取 URL 的實現:

斯威夫特 5:

 func getImageURL(for image: UIImage?) -> URL {
            let documentsDirectoryPath:NSString = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString
            let tempImageName = "tempImage.jpg"
            var imageURL: URL?

            if let image = image {

                let imageData:Data = image.jpegData(compressionQuality: 1.0)!
                let path:String = documentsDirectoryPath.appendingPathComponent(tempImageName)
                try? image.jpegData(compressionQuality: 1.0)!.write(to: URL(fileURLWithPath: path), options: [.atomic])
                imageURL = URL(fileURLWithPath: path)
                try? imageData.write(to: imageURL!, options: [.atomic])
            }
            return imageURL!
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM