我刚刚开始在Swift和Realm开发。我有一个看起来像这样的领域对象:
class PersonItem: Object
{
dynamic var Id = ""
dynamic var Name = ""
dynamic var LastName = ""
}
class PersonDetailsItem: Object
{
dynamic var Id = ""
dynamic var JobDescription = ""
var ImagesArray = List<ImageItem>()
}
另一个看起来像这样:
class ImageItem: Object
{
dynamic var base64String = ""
}
我有一个tableView中显示的人物项列表。在didSelectItemAtIndexPath上,我调用一个方法来获取每个项目的详细信息。现在,当我从服务器接收数据时,我得到一个base64编码的图像数组。我试图将它们保存在图像列表中,这样我就可以离线检索它们,我似乎无法让它工作。这是我尝试过的事情之一
try! realm.write{
for obj in self.imagesArray //the array with the images from server
{
let image = ImageItem()
image.base64String = obj as! String
personDetailsItem.ImagesArray.append(image)
}
let items = realm.objects(PersonDetailsItem)
if items.count > 0
{
for obj in items
{
if obj.valueForKey("Id") as? String == personItem.Id
{
realm.add(personDetailsItem, update: true)
return
}
}
realm.add(personDetailsItem)
}
else
{
realm.add(personDetailsItem)
}
}
结果:在所有项目中保存了我打开的第一个项目的图像。我在这里失踪了什么?任何帮助将非常感谢。 感谢
答案 0 :(得分:0)
我应该把脚放在嘴里:)。问题不在于我写它们的方式,这是我读它们的方式。代码有效,但我最终使用了一个更清晰的解决方案:
try! realm.write
{
for obj in self.imagesArray
{
let image = ImageItem()
image.base64String = obj as! String
personDetailsItem.imagesArray.append(image)
}
if realm.objectForPrimaryKey(PersonDetailsItem.self, key: personDetailsItem.Id) == nil
{
realm.add(personDetailsItem)
}
else
{
realm.add(personDetailsItem, update: true)
}
}
如果有人要添加的话请做。感谢