2015-12-11 11 views
10

watchOS2の複雑さを作成しようとしています。私はiOSアプリケーションの新しいターゲットを作成しました - 視線と合併症を伴いました モジュラーラージコンプリケーションは1つだけにします。カスタマイズすると複雑になってApple Watchがフリーズする

私は(シミュレータと実際のウォッチの両方で)

を合併症ウォッチフリーズを設定しようとして実行すると、ここに私の合併症コードだ:

-(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は:プロキシ:ql.ManaEU.watchkitapp <(ヌル)データベース>で見つかりません」 タイプのキャッチされない例外で終了NSException アボートが() CoreSimulator 191.4と呼ばれる - デバイス:アップルウォッチ - 42mm - ランタイム:watchOS 2.0(13S343) - デバイスタイプ:Apple Watch - 42mm

+0

デバイスログでクラッシュレポートを確認しましたか? Watchkit拡張機能がハングした場合、システムは終了しますが、そのタイプのエラーはコンソールに表示されません。 –

+0

時計の面の複雑さをカスタマイズするために 'ClockKit'が依存しているので、' getPlaceholderTemplateForComplication'コードを提供してください。 –

+0

こんにちは、私は質問を編集し、あなたが望む情報を提供しました。 –

答えて

0

FYIは、あなたが提供した拡張コードを使用して時計面をカスタマイズすることができました。問題はない。

クラッシュログエラーのバンドルIDに気付いた場合、システムはwatchkitアプリ(watchkit拡張機能を含む)の問題を報告しています。

キャッチされていない例外 'NSInternalInconsistencyException'が原因でアプリを終了しています。理由: 'アプリケーションが必要です。バンドルID:ql.ManaEU.watchkitapp ...

ウォッチキットバンドルの問題を追跡する必要があります。まず最初に、Xcodeのwatchkitアプリケーションビルドのターゲットログがあります。エラーや警告がない場合は、iPhoneおよびApple Watchのコンソールログを確認してください。

問題がない場合は、Info.plistを調べて、これらの値が有効であり、必要なキーが存在することを確認してください。また、Watchkitアプリの目標ビルド設定を確認してください。

バージョンエディタを使用して、Xcodeプロジェクトを最初のコミットと比較して、何かが不注意に変更または削除されたかどうかを確認することができます。

0

あなたはCLKComplicationTemplateModularLargeColumns現在のタイムラインエントリためプレースホルダテンプレートCLKComplicationTemplateModularLargeTableを提供しています。複雑なプレースホルダテンプレートは、現在のタイムラインエントリと一致する必要があります。

関連する問題