Добавление структуры в массив структур в Swift 3 - PullRequest
0 голосов
/ 21 мая 2018

У меня есть структура:

struct Note{
    var date: String;
    var comment: String;
}

Затем я создаю массив с двумя вложенными массивами,

var data = [[Note()],[Contributors()]]

Эти два массива используются для заполнения двух разделов таблицы.Посмотреть.Мне нужно добавить структуру в массив структуры Notes, но когда я пытаюсь добавить ее, используя

data[0].append(Note(date: "06-06-2012",comment:"Created Note"))

и

(data[0] as! Note).append(Note(date: "06-06-2012",comment:"Created Note"))

, выдается ошибка

Нельзя использовать мутирующий член для неизменяемого значения типа «Примечание»

Как можно изменять значения, которые необходимо преобразовать?

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

Вы можете получить решение, используя protocol

protocol DataSourceNoteContributors {}

struct Contributors: DataSourceNoteContributors{

}
struct Note:DataSourceNoteContributors{
    var date: String;
    var comment: String;
}

Затем можно легко использовать

    var data = [Note(date: "date", comment: "comment"),Contributors()]

    data.append(Note(date: "note1", comment: "comment2"))
    data.append(Contributors())

// используя приведение для распознавания

if data[0] as Note {

}
0 голосов
/ 21 мая 2018

Ваше первоначальное создание массивов неверно.

Измените:

var data = [[Note()],[Contributors()]]

на:

var data: [Any] = [[Note](),[Contributors]()]

Ваш код создает массив, содержащий индекс 0массив Any, содержащий один пустой экземпляр Note, а по индексу 1 массив Any, содержащий один пустой экземпляр Contributors.

Исправление создает массив, содержащий пустой Note массив с индексом 0 и пустой Contributors массив с индексом 1.

Но даже со всеми этими "исправлениями" вы все равно получите ошибку, если сделаете:

(data[0] as! Note).append(Note(date: "06-06-2012",comment:"Created Note"))

Странно, что data содержит два разных типа данных.Вы действительно должны иметь два массива:

var notes = [Note]()
var contributors = [Contributors]()

Тогда вы можете легко сделать:

notes.append(Note(date: "06-06-2012",comment:"Created Note"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...