【发布时间】:2019-11-09 18:58:59
【问题描述】:
我是 Realm 的新手,在这里对 swift 有一点经验。我正在尝试自己编写程序。我想在基于领域的数据库中保存图像数据和有关此图像的一些信息。如果我必须像这样一张一张地添加每张图片,我会很痛苦:
func loadimageData(){
if itemimageResult!.count > 0 {
return
}
let imageURL1 = Bundle.main.url(forResource: "ShakerColor1", withExtension: "png")!
let imageURL2 = Bundle.main.url(forResource: "ShakerColor2", withExtension: "png")!
let imageURL3 = Bundle.main.url(forResource: "ShakerColor3", withExtension: "png")!
let imageData1 = try! Data(contentsOf: imageURL1)
let imageData2 = try! Data(contentsOf: imageURL2)
let imageData3 = try! Data(contentsOf: imageURL3)
let putImage1 = itemImage(value:[2,imageData1])
let putImage2 = itemImage(value:[2,imageData2])
let putImage3 = itemImage(value:[2,imageData3])
try! realm.write{
realm.add(putImage1)
realm.add(putImage2)
realm.add(putImage3)
}
}
我想知道是否还有其他更好的方法。
非常感谢您的宝贵时间。
【问题讨论】:
-
你知道需要提前添加到数据库的图片数量或图片名称吗?
-
我可以重命名它们。我的问题是我还需要将相关数据存储到图像中,例如如果这张图片是猫,它需要存储 "cateName","catBrade","catSex" 。我知道我需要添加多少张图片。
-
如果您事先知道需要添加的图像数量,那么您可以创建一个 struct 并定义所需的属性并将数据存储在一个数组中。然后循环遍历数组以将所有记录添加到数据库中。
-
该代码肯定可以工作,并且是向 Realm 写入数据的正确结构。不过,第一个问题是您正在从捆绑包中读取图像。您是否打算以这种方式存储它们?如果是这样,为什么要在捆绑包中提供它们但还要将它们写入领域(这是重复的)?另外,我们不知道
itemImage(value:[2,imageData1])做了什么,所以应该解释一下。itemImage是一个类吗? -
是的,itemImage 是一个类。如果我不将它们存储在捆绑中,我应该从哪里读取这些图像?我很了解这一点。