我正在使用Swift 2编写一个iOS应用程序,我想在Realm数据库中本地保存一个帐户的个人资料图片。我找不到任何文档或谈论此事的人。

是否有可能?如何?

这样做可能不好吗?

最佳答案

您可以将图像存储为NSData。有了要存储在本地的图像的URL,下面是一个代码片段,该代码片段是如何实现的。

class MyImageBlob {
    var data: NSData?
}

// Working Example
let url = NSURL(string: "http://images.apple.com/v/home/cb/images/home_evergreen_hero_iphone_medium.jpg")!
if let imgData = NSData(contentsOfURL: url) {
    var myblob = MyImageBlob()
    myblob.data = imgData

    let realm = try! Realm()
    try! realm.write {
        realm.add(myblob)
    }
}

这样做可能不是一个好主意吗?

规则很简单:
如果图像尺寸小,图像数量少并且很少更改,则可以坚持将其存储在数据库中。

如果有一堆图像,最好将它们直接写入文件系统,然后仅将图像的路径存储在数据库中。

这是可以做到的:
class MyImageStorage{
    var imagePath: NSString?
}

let url = NSURL(string: "http://images.apple.com/v/home/cb/images/home_evergreen_hero_iphone_medium.jpg")!
if let imgData = NSData(contentsOfURL: url) {
    // Storing image in documents folder (Swift 2.0+)
    let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0]
    let writePath = documentsPath?.stringByAppendingPathComponent("myimage.jpg")

    imgData.writeToFile(writePath, atomically: true)

    var mystorage = MyImageStorage()
    mystorage.imagePath = writePath

    let realm = try! Realm()
    try! realm.write {
         realm.add(mystorage)
    }
}

请注意:两种代码示例都不是下载图像的可靠方法,因为存在许多陷阱。在现实世界中的应用程序/生产环境中,我建议使用为此目的而设计的库,例如AFNetworkingAlamofireImage

关于ios - 如何将镜像放入Realm数据库中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33299523/

10-13 04:36