2016-02-14 2 views
0

Я разрабатываю приложение с использованием 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 
    ) 
} 
+0

Предполагая, что объект ваших вопросов тип коллекции, вы пытались переместить свой призыв к saveObjext (newQ) на внешней стороне ваш цикл? Моя ставка заключается в том, что она экономится три раза, потому что ваше свойство count равно 3, и ваши петли выполняются три раза по каждому вопросу. –

+0

Или переместите свойство newQ внутри цикла –

ответ

0

Я думаю, вы должны попытаться поставить инициал newQ в для цикла

for var index = 0; index < i; ++index { 
    var newQ : Questions = Questions() 
    newQ.Qnumber = String(index + 1) 
    newQ.Qanswer1 = cellAnswer1[index] 
    newQ.Qanswer2 = cellAnswer2[index] 
    saveObject(newQ) 
} 
Смежные вопросы