簡體   English   中英

如何快速制作可變形圖像?

[英]how to make Transformable image in swift?

我正在嘗試使用核心數據快速制作可變形圖像。 我創建了可變形的imageA。 當我嘗試查看數據庫中是否有圖像時,它表明那里什么也沒有。 如何將圖像添加到數據庫? 我的代碼有什么問題? 這是我的代碼

我在保存和獲取@NSManaged var isSet的地方使用setImage和getImage方法:NSNumber?

extension AppSettings {

    @NSManaged var isSet: NSNumber?
    @NSManaged var imageA: UIImage?

}

func setImage(inputAppSettings : AppSettings)
{
    let theImage = UIImage(named: "image.png")
    inputAppSettings.imageA = theImage
}



func getImage(inputAppSettings : AppSettings)
{
    if let theImage = inputAppSettings.imageA
    {
        print("theImage: \(theImage)")
    }
}

類MyTransformer:NSValueTransformer {

override class func allowsReverseTransformation() -> Bool
{
    return true
}


class func transformedValue(value:AnyObject) -> AnyObject
{
    var returnData:AnyObject = NSData()
    let theImage = value as! UIImage
    if let theData = UIImagePNGRepresentation(theImage)
        {returnData = theData}

    return returnData
}

class func reverseTransformedValue(value:AnyObject) -> AnyObject
{
    var returnImage:AnyObject = UIImage()
    let theData = value as! NSData
    if let theImage = UIImage(data: theData)
        {returnImage = theImage}

    return returnImage
}

override class func transformedValueClass() -> AnyClass
{
    return UIImage.self
}

}

func set()
{
    if let moc = self.managedObjectContext {
    let theAppSettingsAnyObject = NSEntityDescription.insertNewObjectForEntityForName("AppSettings", inManagedObjectContext: moc)
        if let theAppSettings = theAppSettingsAnyObject as? AppSettings
        {
            theAppSettings.isSet = true
            self.setImage(theAppSettings)
        }
        var savingError: NSError?
        do {
            try moc.save()
         } catch let error1 as NSError {
            savingError = error1
        if let error = savingError{
            print("Failed to save . Error = \(error)")
        }
    }

    }
}

您正在使用符合NSCoding UIImage 結果, 您不需要自定義值轉換器 ,因為UIImage已經覆蓋了它。 您需要做的只是:

  1. 在核心數據模型編輯器中將屬性聲明為可Transformable類型
  2. 讀寫UIImage到該屬性。 到/從二進制格式的轉換將由UIImage處理。

將圖像存儲在數據庫中是一項繁重的操作,編碼和解碼或轉換將花費更多時間。

代替轉換, 嘗試將圖像保存在Document目錄中,並將其url存儲在數據庫中。

暫無
暫無

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

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