Я разрабатываю приложение с использованием Kinvey в качестве backend. И у меня есть массив объектов Questions
, которые мне нужно сохранить в базе данных, которая состоит из Qnumber
, Qanswer1
и Qanswer2
. Моя проблема в том, что когда я пытаюсь сохранить этот массив вопросов в базе данных, он всегда сохраняет последний объект в массиве n раз.Хранить данные в бэкэнд с помощью Swift
Предположим, что у меня есть эти данные, хранящиеся в массиве:
Questions[0].Qnumber = 1
Questions[0].Qanswer1 = "a1"
Questions[0].Qanswer2 = "b1"
Questions[1].Qnumber = 2
Questions[1].Qanswer1 = "a2"
Questions[1].Qanswer2 = "b2"
Questions[2].Qnumber = 3
Questions[2].Qanswer1 = "a3"
Questions[2].Qanswer2 = "b3"
Когда я сохранить эти объекты в интерфейсе, используя петлю и проверить базу данных, я получаю:
Qnumber: 3, 3, 3 Qanswer1: a3, a3, a3 Qanswer2: b3, b3, b3
Я провел 2 дня, пытаясь решить эту проблему, но я не мог Вот мой код:
@IBAction func saveButton(sender: AnyObject) {
let i = Int(numberOfQuestions)
var newQ : Questions = Questions()
for var index = 0; index < i; ++index {
newQ.Qnumber = String(index + 1)
newQ.Qanswer1 = cellAnswer1[index]
newQ.Qanswer2 = cellAnswer2[index]
saveObject(newQ)
}
}
func saveObject (newQuestion: Questions){
let store = KCSAppdataStore.storeWithOptions([
KCSStoreKeyCollectionName : "Questions",
KCSStoreKeyCollectionTemplateClass : Questions.self
])
store.saveObject(
newQuestion,
withCompletionBlock: { (objectsOrNil: [AnyObject]!, errorOrNil: NSError!) -> Void in
if errorOrNil != nil {
NSLog("an error happened: %@", errorOrNil)
} else {
//save was successful
NSLog("A new question is saved sucessfully")
}
},
withProgressBlock: nil
)
}
Предполагая, что объект ваших вопросов тип коллекции, вы пытались переместить свой призыв к saveObjext (newQ) на внешней стороне ваш цикл? Моя ставка заключается в том, что она экономится три раза, потому что ваше свойство count равно 3, и ваши петли выполняются три раза по каждому вопросу. –
Или переместите свойство newQ внутри цикла –