Я работаю над приложением, в котором мне нужно сохранять изображения локально, и для этого я использую область, приложение берет, скажем, от 10 до 40 изображений за раз из галереи и начинает записывать изображения в локальную базу данных области и замораживает экран во время записи, плз, как я могу изменить свой код, чтобы мое приложение не зависало во время записи, я застрял в этой ситуации, любая помощь будет признательна, спасибо
let imagesAdd = refObject.1
let imageobjectArray = modelObject as! [FacilitiesImagesModel]
do{
for imageObject in imageobjectArray{
try realmObj.write {
imagesAdd?.facilitiesImages.append(imageObject)
}
}
completionHandler(true, "")
}catch let err{
realmObj.cancelWrite()
completionHandler(false, err.localizedDescription)
}
здесь мой полный метод, я удалил дополнительный код, который не является частью моего вопроса
struct RealmCRUD {
private let realmObj = try! Realm()
func create<T>(modelObject: T, modelObjectType: ModelType, refObject: (PropertyModel?, FacilitiesModel?), completionHandler: @escaping ((Bool, String) -> Void)){
switch modelObjectType {
case .FacilitiesImagesModel:
let imagesAdd = refObject.1
let imageobjectArray = modelObject as! [FacilitiesImagesModel]
do{
for imageObject in imageobjectArray{
try realmObj.write {
imagesAdd?.facilitiesImages.append(imageObject)
}
}
completionHandler(true, "")
}catch let err{
realmObj.cancelWrite()
completionHandler(false, err.localizedDescription)
}
break
}
default:
break
}
, и я вызываю этот метод из другого класса, как это:
func dismissComplete() {
var arrayOfFacilitiesImagesModelObj = [FacilitiesImagesModel]()
for photos in self.selectedAssets{
if let photo = photos.fullResolutionImage{
let facilitiesImagesModelObj = FacilitiesImagesModel()
facilitiesImagesModelObj.facilityPhoto = photo.jpegData(compressionQuality: 0.5)!
arrayOfFacilitiesImagesModelObj.append(facilitiesImagesModelObj)
}else{
print("Unable to select facility photos")
}
}
self.realmCrudObj.create(modelObject: arrayOfFacilitiesImagesModelObj, modelObjectType: .FacilitiesImagesModel, refObject: (nil,self.realmFacilitiesResults), completionHandler: { (success, error) in
self.collectionViewReference?.reloadData()
ProgressHUD.dismiss()
if !success{
self.showAlert(title: "Error", description: error)
}
})
}
и я я передаю выбранные данные свойства в эту переменную в этом классе
var realmFacilitiesResults: FacilitiesModel?
вот моя модель объекта
class FacilitiesModel: Object {
@objc dynamic var facilityName = ""
let facilitiesImages = List<FacilitiesImagesModel>()
let parentProperty = LinkingObjects(fromType: PropertyModel.self, property: "facilities")
}