Осложнение приводит к зависанию Apple Watch при настройке

я пытаюсь создать осложнение для watchOS2. Я создал новую цель для своего приложения для iOS - с помощью Glances and Complications я хочу иметь только одно Modular Large Complication.

Когда я бегу, пытаясь установить сложность, часы зависают (как на симуляторе, так и на настоящих часах)

Вот мой код осложнения:

-(void)getCurrentTimelineEntryForComplication:(CLKComplication *)complication withHandler:(void (^)(CLKComplicationTimelineEntry * _Nullable))handler {

if (complication.family == CLKComplicationFamilyModularLarge) {

    CLKComplicationTemplateModularLargeColumns *template = [[CLKComplicationTemplateModularLargeColumns alloc] init];
    NSString *title = NSLocalizedString(@"TODAYINTAKE", nil);
    template.row1Column1TextProvider = [CLKSimpleTextProvider textProviderWithText:title];
    template.row2Column2TextProvider = [CLKSimpleTextProvider textProviderWithFormat:@"kcal"];
    template.row3Column2TextProvider = [CLKSimpleTextProvider textProviderWithFormat:@"ml"];

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    if ([self isDateToday:[defaults objectForKey:@"dateSaved"]]) {
        template.row2Column1TextProvider = [CLKSimpleTextProvider textProviderWithFormat:@"%@",[defaults objectForKey:@"energy"]];
        template.row3Column1TextProvider = [CLKSimpleTextProvider textProviderWithFormat:@"%@", [defaults objectForKey:@"water"]];
    } else {
        template.row2Column1TextProvider = [CLKSimpleTextProvider textProviderWithFormat:@"0"];
        template.row3Column1TextProvider = [CLKSimpleTextProvider textProviderWithFormat:@"0"];
    }
    template.row2ImageProvider = [CLKImageProvider imageProviderWithOnePieceImage:[UIImage imageNamed:@"energy64"]];
    template.row3ImageProvider = [CLKImageProvider imageProviderWithOnePieceImage:[UIImage imageNamed:@"water64"]];
    template.row1ImageProvider = [CLKImageProvider imageProviderWithOnePieceImage:[UIImage imageNamed:@"64"]];
    template.row1Column2TextProvider = [CLKSimpleTextProvider textProviderWithFormat:@" "];
    CLKComplicationTimelineEntry *entry = [CLKComplicationTimelineEntry entryWithDate:[NSDate new] complicationTemplate:template];

    handler(entry);
} else handler(nil);   
}

-(void)getPlaceholderTemplateForComplication:(CLKComplication *)complication withHandler:(void (^)(CLKComplicationTemplate * _Nullable))handler {
if (complication.family == CLKComplicationFamilyModularLarge) {


    CLKComplicationTemplateModularLargeTable *template = [[CLKComplicationTemplateModularLargeTable alloc] init];
    NSString *title = NSLocalizedString(@"TODAYINTAKE", nil);
    template.headerTextProvider = [CLKSimpleTextProvider textProviderWithText:title];
    template.row1Column2TextProvider = [CLKSimpleTextProvider textProviderWithFormat:@"kcal"];
    template.row2Column2TextProvider = [CLKSimpleTextProvider textProviderWithFormat:@"ml"];

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    if ([self isDateToday:[defaults objectForKey:@"dateSaved"]]) {
        template.row1Column1TextProvider = [CLKSimpleTextProvider textProviderWithFormat:@"%@",[defaults objectForKey:@"energy"]];
        template.row2Column1TextProvider = [CLKSimpleTextProvider textProviderWithFormat:@"%@", [defaults objectForKey:@"water"]];
    } else {
        template.row1Column1TextProvider = [CLKSimpleTextProvider textProviderWithFormat:@"0"];
        template.row2Column1TextProvider = [CLKSimpleTextProvider textProviderWithFormat:@"0"];
    }

handler(template);
} else handler(nil);

}

Я передаю CLKComplicationTimeTravelDirectionNone в качестве поддерживаемых направлений путешествия во времени

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

Из отчета о сбое карусели я смог прочитать эту информацию:

*** Завершение работы приложения из-за неперехваченного исключения «NSInternalInconsistencyException», причина: «Требуется приложение. bundleID: ql.ManaEU.watchkitapp appToReplace: proxy: ql.ManaEU.watchkitapp ‹(null) Not found in database> 'завершается неперехваченным исключением типа NSException abort () под названием CoreSimulator 191.4 - Устройство: Apple Часы - 42 мм - Время выполнения: watchOS 2.0 (13S343) - Тип устройства: Apple Watch - 42 мм


person Matěj Mefjů Novák    schedule 11.12.2015    source источник
comment
Вы проверяли журнал устройства на наличие отчета о сбоях? Если бы расширение watchkit зависло, система прекратила бы его, но этот тип ошибки не будет отображаться в консоли.   -  person    schedule 14.12.2015
comment
Предоставьте свой getPlaceholderTemplateForComplication код, поскольку от него ClockKit зависит настройка усложнения циферблата.   -  person    schedule 14.12.2015
comment
Привет, я отредактировал вопрос и предоставил информацию, которую вы хотели.   -  person Matěj Mefjů Novák    schedule 14.12.2015


Ответы (2)


К вашему сведению, я смог настроить циферблат, используя предоставленный вами код расширения. Нет проблем.

Если вы заметили идентификатор пакета в ошибке журнала сбоев, система сообщает о проблеме с приложением watchkit (которое содержит расширение watchkit).

Завершение работы приложения из-за неперехваченного исключения «NSInternalInconsistencyException», причина: «Требуется приложение. bundleID: ql.ManaEU.watchkitapp ...

Вам нужно будет выяснить, что не так с комплектом Watchkit. Первым делом нужно начать с целевого журнала сборки приложения Xcode watchkit. Если там нет ошибок или предупреждений, проверьте журналы консоли iPhone и Apple Watch.

Если это не указывает на проблему, проверьте Info.plist, чтобы убедиться, что эти значения действительны и требуемые ключи присутствуют. Также проверьте настройки целевой сборки приложения watchkit.

Вы должны иметь возможность использовать редактор версий для сравнения проекта Xcode с его первоначальной фиксацией, чтобы увидеть, не было ли что-то случайно изменено или удалено.

person Community    schedule 14.12.2015

Вы предоставляете шаблон-заполнитель CLKComplicationTemplateModularLargeTable для текущей записи на временной шкале для CLKComplicationTemplateModularLargeColumns. Шаблон заполнителя для усложнения должен соответствовать текущей записи на временной шкале.

person Antonioni    schedule 29.02.2016