Скрытие кнопки, если функция быстрого Coredata пуста - PullRequest
0 голосов
/ 01 июня 2019

У меня проблема с некоторым кодом. У меня есть функция под названием вложения. Он вызывает DatabaseManager для определенной функции getttachmentdata. Это вызывает coredata, чтобы увидеть, загрузил ли пользователь изображение, и вызвать его. Если он есть, у меня есть другая часть кода, где пользователь нажимает кнопку, и он показывает это изображение.

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

    let attachments = DataBaseManager().getAttachmentData()
    if attachments.isEmpty  {
        btnProofOfDelivery.isHidden = true
        btnProofOfDelivery.isEnabled = false
    }

Я написал код выше, однако, когда я попытался запустить мою программу, она все еще отображала кнопку, которую я хотел исчезнуть. Запуск без оператора if приводит к исчезновению кнопки.

код для getattachments

func getAttachmentData()-> Array<Data>{
    var data1 = [Data]()
    let context = CoreData.sharedCoreData.managedObjectContext
    let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Attachments")

    do {
        let result = try context.fetch(request)
        print(result)
        for data in result as! [NSManagedObject] {
            print(data.value(forKey: "attachment") as! Data)
            data1.append(data.value(forKey: "attachment") as! Data)
        }
        if data1.count == 0 {
            return [Data()]
        }else{
            return data1
        }
    } catch {
        return [Data()]
    }
}

1 Ответ

0 голосов
/ 01 июня 2019

Ниже приведена ошибка, если извлечение ничего не возвращает, вы возвращаете новый Data объект

if data1.count == 0 {
   return [Data()]
}

Вы, конечно, намеревались написать

if data1.count == 0 {
   return [Data]()
}

и некоторые другие.проблема в catch

или вы можете просто удалить все это, так как data1 правильно инициализирован, так что вы можете просто вернуть его в любом случае, чтобы код после цикла for {} мог быть уменьшен до

        return data1
    } catch {
        print(error)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...