2015-12-11 32 views
10

sto cercando di creare complicazioni per watchOS2. Ho creato un nuovo target per la mia applicazione iOS - con Glances and Complications Voglio avere una sola Complicazione Modulare Grande.La complicazione blocca Apple Watch durante la personalizzazione di

quando ho eseguito il tentativo di impostare complicazione Guarda blocca (sia su simulatore e vero e proprio orologio)

Ecco il mio codice di complicazione:

-(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); 

}

sto passando CLKComplicationTimeTravelDirectionNone come viaggio nel tempo supportato indicazioni

Sono impotente poiché non riesco a vedere alcun errore in console e il simulatore o il dispositivo si blocca.

Dalla relazione crash Carousel sono stato in grado di leggere queste informazioni:

*** Chiusura di applicazione a causa di eccezione non identificata 'NSInternalInconsistencyException', la ragione: 'è necessario Application. BundleID: ql.ManaEU.watchkitapp appToReplace: Proxy: ql.ManaEU.watchkitapp < (null) non trovato nel database>' termina con eccezione non identificata di tipo NSException abort() chiamato CoreSimulator 191,4 - dispositivo: Apple Osservare - 42mm - Runtime: watchOS 2.0 (13S343) - DeviceType: Apple Watch - 42mm

+0

Hai controllato il registro del dispositivo per un rapporto di arresto anomalo? Se l'estensione del watchkit si bloccava, il sistema l'avrebbe terminata, ma quel tipo di errore non comparirà nella console. –

+0

Si prega di fornire il codice 'getPlaceholderTemplateForComplication', dal momento che questo dipende da" ClockKit' per personalizzare la complicazione del quadrante. –

+0

Ciao, ho modificato la domanda e fornito le informazioni che volevi. –

risposta

0

Cordiali saluti, sono stato in grado di personalizzare il quadrante utilizzando il codice di estensione fornito. Nessun problema lì.

Se si nota l'ID bundle nell'errore del registro di arresto anomalo, il sistema segnala un problema con l'app watchkit (che contiene l'estensione watchkit).

terminazione app a causa di eccezione non identificata 'NSInternalInconsistencyException', la ragione: è necessario 'applicazione. bundleID: ql.ManaEU.watchkitapp ...

Avrai bisogno di rintracciare cosa c'è di sbagliato nel bundle di watchkit. Il primo punto da cui iniziare è il log di destinazione della build dell'app Xcode Watchkit. Se non ci sono errori o avvisi, controlla i registri della console iPhone e Apple Watch.

Se ciò non indica il problema, controllare lo Info.plist per assicurarsi che quei valori siano validi e che siano presenti le chiavi richieste. Controlla anche le impostazioni di build di destinazione dell'app watchkit.

Dovresti essere in grado di utilizzare l'editor delle versioni per confrontare il progetto Xcode con il commit iniziale, per vedere se qualcosa è stato inavvertitamente modificato o eliminato.

0

si sta fornendo un modello segnaposto del CLKComplicationTemplateModularLargeTable per l'entrata corrente linea temporale di CLKComplicationTemplateModularLargeColumns. Il modello segnaposto di complicazione deve corrispondere alla voce della timeline corrente.