Редактировать: Исправлено путем добавления «[this.userID]» после каждого «пользовательского» вызова.
Я опробовал ваш метод, и всякий раз, когда я записываю данные, создается новый тег eTag, который приводит к разделению объекта:
"document": {
"25781dc4-805d-4e69-bf89-da1f4d72e7cb": {
"25781dc4-805d-4e69-bf89-da1f4d72e7cb": {
"25781dc4-805d-4e69-bf89-da1f4d72e7cb": {
"25781dc4-805d-4e69-bf89-da1f4d72e7cb": {
"25781dc4-805d-4e69-bf89-da1f4d72e7cb": {
"name": "",
"age": "",
"gender": "",
"education": "",
"major": "",
"eTag": "\"00003998-0000-0000-0000-5c797fff0000\""
},
"name": "Jane Doe",
"eTag": "\"00003e98-0000-0000-0000-5c7980080000\""
},
"age": 22,
"eTag": "\"00004898-0000-0000-0000-5c7980150000\""
},
"gender": "female",
"eTag": "\"00004d98-0000-0000-0000-5c79801b0000\""
},
"education": "Bachelor",
"eTag": "\"00005498-0000-0000-0000-5c7980200000\""
},
"major": "Business Administration",
"complete": true
Как я могу предотвратить это?
Мой Код:
В конструкторе:
this.changes = {};
this.userID = "";
this.userDatax = {
name: "",
age: "",
gender: "",
education: "",
major: "",
eTag: '*',
}
В диалогах:
async welcomeUser (step) {
console.log("Welcome User Dialog");
//step.context.sendActivity({ type: ActivityTypes.Typing});
// Initialize UserData Object and save it to DB
this.changes[this.userID] = this.userDatax;
await this.memoryStorage.write(this.changes);
}
async promptForAge (step) {
console.log("Age Prompt");
// Read UserData from DB
var user = await this.memoryStorage.read([this.userID]);
console.log(user);
// Before saving entry, check if it already exists
if(!user.name) {
user.name = step.result;
user.eTag = '*';
// Write userData to DB
this.changes[this.userID] = user;
await this.memoryStorage.write(this.changes);
}
}
Параметрическое уравнение для круга имеет вид
x = cx + r * cos(a)
y = cy + r * sin(a)
Где r - радиус, cx, cy начало координат, и a угол.
Довольно легко адаптироваться к любому языку с основными функциями триггера. Обратите внимание, что большинство языков будут использовать радиан для угла в функциях триггера, поэтому вместо циклического перегиба в пределах 0,360 градуса вы будете циклически проходить через радианы 0,2I. --- 605596- тема о том, следует ли настройка идти в вашем приложении или в приложении предпочтений является спорной, в основном потому, что нет никакого способа, чтобы открыть настройки из приложения (как указано в ответ coob ссылке на) и потому нет никакого способа добавить взаимодействие к настройкам - и есть много причин, по которым вы можете захотеть,
У Крейга Хоккенберри есть проект под названием GenericTableViews , который поможет вам легко создать табличное представление для настроек или форм.
И еще (отдельный пост из-за «защиты от спама для новичков», извините).
Они используют «стандартный» подход Settings.bundle - - но их довольно легко представить в приложении. И вы также бесплатно получаете системное поведение «Настройки».
Вот еще одно решение:
InAppSettingsKit - это решение с открытым исходным кодом, позволяющее легко добавлять настройки в приложениях для iPhone. Он использует гибридный подход, поддерживая панель Settings.app. Таким образом, у пользователя есть выбор, где изменить настройки ...
Для поддержки традиционных панелей Settings.app приложение должно включать в себя файл Settings.bundle как минимум с Root.plist, чтобы указать соединение элементов пользовательского интерфейса настроек с NSUserDefaults ключи. InAppSettingsKit в основном использует тот же файл Settings.bundle для выполнения своей работы. Это означает, что вам не нужно выполнять дополнительную работу, если вы хотите включить новый параметр настроек. Его просто нужно добавить в Settings.bundle, и он появится как в приложении, так и в Settings.app. Поддерживаются все типы настроек, такие как текстовые поля, ползунки, переключаемые элементы, дочерние представления и т. Д. ...