Когда я сохраняю его, беру нормально и сохраняю. Когда я пытаюсь обновить какую-либо вещь, изображение становится нулевым и отображается пустое изображение, а когда я выполняю действие камеры, оставшиеся данные становятся равными нулю, просто открытие оставшихся данных камеры становится нулевым.
Основная проблема заключается в том, почему изображениестановится ноль при обновлении оставшегося все остается таким же. Только изображение будет нулевым.
Что я могу сделать, чтобы решить эту проблему?
//Navigation and ImagePicekrDelegate are for camera
var imagePicker: UIImagePickerController!
@IBOutlet weak var showImage: UIImageView!
var itemImageVar :UIImage? {
didSet{
}
}
override func viewWillAppear(_ animated: Bool) {
showImage.image = itemImageVar
}
//TODO: Saving image Here
var imageData:Data?
//Select Picture
@IBAction func choosePhotAction(_ sender: UIButton) {
imagePicker = UIImagePickerController()
imagePicker.delegate = self
imagePicker.sourceType = .photoLibrary //This is for opening photo library
present(imagePicker, animated: true, completion: nil)
}
@IBAction func takePhotoActionw(_ sender: UIButton) {
imagePicker = UIImagePickerController()
imagePicker.delegate = self
imagePicker.sourceType = .camera
present(imagePicker, animated: true, completion: nil)
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
if let imageViewer = info[UIImagePickerController.InfoKey.originalImage] {
imagePicker.dismiss(animated: true,completion: nil)
showImage.image = imageViewer as! UIImage
saveImage(image: imageViewer as! UIImage)
}
}
func saveImage(image : UIImage) {
imageData = (image as! UIImage).jpegData(compressionQuality: 100)
print(imageData)
}
@IBAction func saveBtnAction(_ sender: UIButton) {
let newArray = Items()//Item is realm Data Model
newArray.itemName = itemName.text!
if let data = imageData as Data? {
newArray.itemImage = data
}
newArray.dateWise = Date()
//MARK: Realm data
//Creating/saving data here
if saveFlag == true {
//This will go to Create data and save
self.saveItems(item: newArray)
} else {
newArray.id = idVar!
self.updateItems(item: newArray)
}
self.navigationController?.popViewController(animated: true)
}
func saveItems(item: Items) {
do {
try realm.write { //Save/Create
realm.add(item)
}
} catch {
print("Error in saving \(error)")
}
}
func updateItems(item: Items) {
do {
try realm.write {//Save/Create
realm.add(item, update: .modified)
}
} catch {
print("Error in saving \(error)")
}
}
//Read the data after saving like displying again
func displayItems() {
itemArray = realm.objects(Items.self)
}
Отображение ViewController: -
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = self.tableView.dequeueReusableCell(withIdentifier: "ItemDispplayCell", for: indexPath) as! ItemDispplayCell
if let cellItems = itemArray?[indexPath.row] {
if let data = item.itemImage as Data? {
cell.circleImag.image = UIImage(data: data)
}
}else {
cell.itemName.text = "No Items Added"
}
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if let item = itemArray?[indexPath.row] {
if let data = item.itemImage as Data? {
vc.imageVar = UIImage(data: data)
}
}
func displayItems() {
itemArray = realm.objects(Items.self)
tableView.reloadData()
}