ios - 如何将图像放入 Realm 数据库?

标签 ios swift2 realm

我正在使用 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/

相关文章:

ios - 使用 Swift 在 TableView 中重新加载单元格数据

ios - 基于 UIPinch 缩放图像

swift - 检查重复项(随机数)

ios - Realm 是否像 CoreData 一样提供撤销/重做?

swift2 - Realm throw catch swift 2.0

ios - 在 iOS 上读取/写入相同的 MTLTexture

ios - 导航 Controller toolbarItems数组为零?

ios - 无法转换 FBSDKGraphRequestHandler 类型的值

ios - iAd 未加载广告 xcode7

node.js - 无法使用 NodeJs 连接到 Realm 对象服务器