Здравствуйте! На данный момент есть класс, который отправляет от 1 до 11 параметров на сервер в JSON формате ( это текстовый параметр и от 0 до 10 параметров формата NSNumber). И класс построен так, что при изменение какого либо формата удаляются все данные которые уже есть на сервере и сохраняются новые, то есть идет полная перезапись. Это не страшно так то, как максимальный объем этих данных всего 2.7 килобайта. Задание гласит "Организовать как массив ссылок на изображения", и что нужно просто добавить массив изображений в текущий класс. Но возникают несколько проблем: 1 Если есть на сервере уже одно изображение, и мы просто добавляем еще одно, то получается идет перезапись уже двух изображений, а если их будет 10? То это сильный удар по трафику пользователя, плюс это не правильная конструкция взаимодействия сервера с приложением. 2 Во время перезаписи больше 5 изображений, получаю ошибку, что сервер не доступен. Я хочу отправлять конкретное изображение к уже существующему массиву изображений на сервере, и не перезаписывать их каждый раз. Так же присвоить к каждому изображению ID, что бы можно было удалять на сервере изображения из приложения. Я пробовал много различных вариантов, но не смог добиться желаемого результат. Вот код текущего класса
public class AnswersDataServerEntity: DataSetEntity {
static let DataSetName = "DataSetName"
var id: String? = "0"
var streetId: UInt = 0
var streetName: String? = ""
var answers: [AnswerServerEntity]? = []
var documents: [DocumentServerEntity]? = []
private func save()
{
let deleteCommand = DataSetCommand(dataSetAction: DeleteDataSetAction<AnswersDataServerEntity>(dataSetName: AnswersDataServerEntity.DataSetName, data: self)
deleteCommand.executeWithSuccess(
{ (commond) -> Void in
self.add()
},
errorHandler: { (error) -> Void in
})
}
private func add()
{
let command = DataSetCommand(dataSetAction: AddDataSetAction<AnswersDataServerEntity>(dataSetName: AnswersDataServerEntity.DataSetName, data: self)
command.executeWithSuccess(
{ (command) -> Void in
if let _command = command as? DataSetCommand<AnswersDataServerEntity> {
NSLog("\(_command.dataSetAction)")
}
},
errorHandler: { (error) -> Void in
})
}
static func saveSelected()
{
self.selected().save()
}
static private func selected() -> AnswersDataServerEntity
{
var result = AnswersDataServerEntity()
if let selectedCountry = CountryEntity.selected(){
for answer in AnswerEntity.userAnswers() {
result.answers?.append(AnswerServerEntity(questionId: answer.questionId))
}
}
for document in DocumentEntity.deserializeDocuments() {
result.documents?.append(DocumentServerEntity(documentId: document.documentId, documentTitle: document.documentTitle, documentImageString: document.documentImageURL))
}
return result
}
}
public class AnswerServerEntity: DataSetEntity {
var questionId: Int = 0
convenience init (questionId: Int){
self.init()
self.questionId = questionId
}
}
public class DocumentServerEntity: DataSetEntity {
var documentId: Int = 0
var documentTitle: String = ""
var documentImageString: String! // this string will to need to decode in base64string that we can to send it as JSON
convenience init(documentId: Int, documentTitle: String, documentImageString: String) {
self.init()
self.documentId = documentId
self.documentTitle = documentTitle
self.documentImageString = documentImageString
}
}
Результат с сервера, чтобы было лучше понимание, что отправляется.
request: {
"object" : "storage",
"section" : "api",
"method" : "addData",
"data" : [
{
"answers" : [
{
"questionId" : 01
},
{
"questionId" : 03
},
{
"questionId" : 06
},
{
"questionId" : 10
}
],
"documents" : [
{
"documentImageString" : "\/var\/mobile\/Containers\/Data\/Application\/DD6F8D10-1241-4119-9639-AB983B27CFA6\/Documents\/04DDA484-F257-43BC-A459-3BC7C6050D6F",
"documentTitle" : "xcode",
"documentId" : 0
}
],
"streetName" : "Молодежная",
"id" : "0",
"streetId" : 14
}
],
"token" : "**********************$$$$*$*$*$",
"dataSet" : "DataSetName"
}