Как добавить сотни данных изображения, используя область с Swift - PullRequest
0 голосов
/ 09 ноября 2019

Я новичок в сфере и немного опыта со 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)
    }
}

Я хочу знать, есть ли какой-нибудь другой лучший способ сделать это.

Большое спасибо за ваше время.

1 Ответ

0 голосов
/ 11 ноября 2019

Это ответ, но не единственный ответ. Если у вас есть список изображений и вы хотите записать их в область, вот что я хотел бы сделать.

Начнем с класса, в котором хранятся данные изображений. При желании вы можете добавить, возможно, заголовок изображения или описание изображения и т. Д.

class ImageClass: Object {
    @objc dynamic var imageData: Data?

    convenience init(withImageName: String) {
        self.init()
        let imageUrl = Bundle.main.url(forResource: withImageName, withExtension: "png")!
        let imageData = try! Data(contentsOf: imageUrl)
        self.imageData = imageData
    }
}

Затем список имен изображений. Я не знаю, как ваши хранятся, но у меня есть они в массиве, и они хранятся в комплекте приложений.

let imageNames = [ "ShakerColor1", "ShakerColor2", "ShakerColor3" ]

Затем код для создания массива ImageClasses

   let images = imageNames.map { name -> ImageClass in
      let image = ImageClass(withImageName: name)
      return image
   }

и, наконец, напишите изображения в Царство.

do {
    let realm = try Realm()

    try! realm.write {
        realm.add(images)
    }

} catch let error as NSError {
    print(error.localizedDescription)
}
...