Nano Hash - криптовалюты, майнинг, программирование

Невозможно загрузить сообщение в сегодняшнем виджете

Я занят разработкой своего виджета. Так как мы уже разместили наше приложение с интеграцией виджетов. Но через несколько дней у меня возникла проблема с сегодняшним виджетом в iOS. Я написал код для двух случаев. В первый раз, когда виджет изначально загружается в первый раз при запуске приложения, он вызывает веб-службу и извлекает данные через Интернет, а затем мы сохраняем их по умолчанию для последующего использования.

Теперь, когда в следующий раз пользователь откроет меню уведомлений, мы сначала покажем пользователю наш старый сохраненный контент, а затем извлечем его из веб-службы и сохраним по умолчанию, а затем снова перезагрузим таблицу.

Для описанной выше операции я столкнулся с проблемой размера содержимого для таблицы, проблемой мерцания и в некоторых случаях сообщением "невозможно загрузить".

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

- (void)widgetPerformUpdateWithCompletionHandler:(void (^)(NCUpdateResult))completionHandler {
    // Perform any setup necessary in order to update the view.
    // If an error is encountered, use NCUpdateResultFailed
    // If there's no update required, use NCUpdateResultNoData
    // If there's an update, use NCUpdateResultNewData
    [self getBookedAppointmentsNew:completionHandler];
}

Так что, пожалуйста, поделитесь со мной своим опытом и идеями.


  • Просто для ясности: вы вызываете свою веб-службу и не вызываете обработчик завершения до тех пор, пока этот вызов не завершится? 23.01.2015
  • Да, я делаю то же самое. Я вызываю веб-службу и по завершении службы завершаю ее обработчиком завершения. 27.01.2015
  • На самом деле, мне нужно каждый раз вызывать веб-службу, чтобы получить мои последние события для клиентов, но пока я их не получу, я пытаюсь показать ранее полученные данные клиентам. Таким образом, нет возможности мерцания экрана. Я хочу обновить представление с новым содержимым без каких-либо побочных эффектов. 27.01.2015

Ответы:


1

В общем, я видел сообщение «Невозможно загрузить» всякий раз, когда в виджете происходил сбой. Виджет пытается загрузить себя, и если он неоднократно вылетает, он просто покажет сообщение «Невозможно загрузить». Отладьте свой виджет и убедитесь, что ничто не вызывает его сбой

05.01.2016
  • Я исправил свои проблемы в виджете, но он по-прежнему показывал, что не может загрузиться. Оказывается, iOS даже не пыталась загрузить виджет, если он вылетал достаточное количество раз. Пришлось перезагрузить телефон и тут он загрузился. Спасибо за совет! 06.10.2016

  • 2

    Наконец-то я нашел способ решить проблему. Пожалуйста, взгляните на код ниже.

    В методе viewDidLoad() я только что установил предпочтительный размер содержимого представления на базовую высоту, которая мне нужна при запуске, чтобы показать мой вид снизу, а затем я сделал вызов веб-службы для получения данных. После извлечения данных я снова установил предпочтительный размер содержимого представления TodayWidget.

    -(void)viewDidLoad
    {
        [super viewDidLoad];
        self.bottomView.frame = CGRectMake(self.bottomView.frame.origin.x, 0.0, self.bottomView.frame.size.width, self.bottomView.frame.size.height);
        self.preferredContentSize = CGSizeMake(self.view.frame.size.width, self.bottomView.frame.size.height);
        [self getBookedAppointmentsNew];
    }
    
    -(void)getBookedAppointmentsNew
    {
        //-- After web-service response (positive/negative), I have set again the preferred content size.
        self.bottomView.frame = CGRectMake(self.bottomView.frame.origin.x, self.scrollView.frame.size.height, self.bottomView.frame.size.width, self.bottomView.frame.size.height);
        self.preferredContentSize = CGSizeMake(self.view.frame.size.width, (self.bottomView.frame.origin.y + self.bottomView.frame.size.height));
    }
    

    Я выполнил шаги, описанные выше, чтобы решить проблемы, связанные с «Невозможно загрузить» и «Мерцание экрана» с расширением «Сегодня».

    30.01.2015
  • Отличный подход, целью для меня было self.view.frame.size.width 06.04.2016

  • 3

    Ограничения макета вашего интерфейса виджета могут быть не уникальными. Представления без каких-либо ограничений макета могут обрезать свое содержимое или перекрывать другие представления.

    13.08.2020
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..