как я все еще храню свои данные даже в автономном режиме приложения

myList = [[1]*4] * 3 создает один объект списка [1,1,1,1] в памяти и копирует его ссылку 3 раза. Это эквивалентно obj = [1,1,1,1]; myList = [obj]*3. Любая модификация obj будет отражена в трех местах, где obj упоминается в списке. Правильным утверждением будет:

myList = [[1]*4 for _ in range(3)]

или

myList = [[1 for __ in range(4)] for _ in range(3)]

. Важно отметить, что * оператор в основном используется для создания список литералов. Поскольку 1 является литералом, значит, obj =[1]*4 создаст [1,1,1,1], где каждый 1 будет атомарным, а не ссылкой 1, повторяемым 4 раза. Это означает, что если мы obj[2]=42, то obj станет [1,1,42,1] не [42,42,42,42], как могут предположить некоторые.

0
задан Doug Stevenson 24 March 2019 в 05:29
поделиться

1 ответ

Firestore поддерживает автономный режим по умолчанию, но не поддерживает await и runTransaction в автономном режиме. Если они присутствуют, то будущее не будет разрешено, поэтому создается впечатление, что Firestore не поддерживает автономный режим. Просто напишите свой код без await вызовов или runTransaction, и вы обнаружите, что ваше приложение поддерживает автономный режим.

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

0
ответ дан Shababb Karim 24 March 2019 в 05:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: