私は自分の小石の時計の設定を最適化しようとしています。文字列の比較を避けるために、すべてのGColor値を配列に格納しますが、それはまったく機能しません。
配列:
static uint8_t colors[] = {
GColorInchwormARGB8, //1
GColorSpringBudARGB8, //2
GColorBrightGreenARGB8, //3
GColorMintGreenARGB8, //4
GColorScreaminGreenARGB8, //5
GColorGreenARGB8, //6
GColorMalachiteARGB8, //7
};
configからデータを読み込みます。
static void in_recv_handler(DictionaryIterator *iterator, void *context)
{
Tuple *t = dict_read_first(iterator);
while (t != NULL){
switch (t -> key){
//++++++ background color +++++++
case bgColor:
persist_write_int(bgColor, t->value->int8);
break;
//++++++ time color ++++++
case timeColor:
persist_write_int(timeColor, t->value->int8);
break;
}
t = dict_read_next(iterator);
}
}
私はuint8、uint16、uint32、int8、int16、int32を試しました。 int32を使用すると時計がクラッシュします。
レイヤーに色を設定する:
time_color = (GColor)colors[persist_read_int(timeColor)];
私が使うとき:
time_color = (GColor)colors[4];
正しい色が表示されます。
htmlページの値:
<select id="bg_select">
<option class="inchworm" value="0">Inchworm</option>
<option class="springBud" value="1">Spring Bud</option>
<option class="brightGreen" value="2">Bright Green</option>
<option class="mintGreen" value="3">Mint Green</option>
</select>
誰もそれを修正するための提案を持っていますか?何が悪いですか?
回答:
回答№1は1イベントの正確な順序に応じて、色の値がまだ保存されていない可能性があります。あなたは値が存在するかどうかチェックしていますか?
if(persist_exists(timeColor)) {
time_color = (GColor)colors[persist_read_int(timeColor)];
}