Я собираюсь взять два структурных массива данных массива, извлеченных из нескольких источников (веб-вызовы REST), и привести их к одному единственному структурному массиву, который я могу использовать в UITableView.
Первоначально я пошел вниз по пути создания многомерного массива, но оказалось трудным, когда мне пришлось понижать типы как [AnyObject] и не мог читать в свойствах.
Пример данных: -
import UIKit
// First Set Of Data
struct Items : Codable{
// List of 'items'
let items : [Item]
}
struct Item: Codable{
// Items inside the array
let id : String
let name : String
let price : String
let imageURL : String
let weight : String
}
// ******** SECOND SET OF DATA
struct SecondSetOfItems : Codable {
let mainFopCollection : MainFopCollection?
}
struct MainFopCollection : Codable {
let sections : [Sections]?
}
struct Sections : Codable {
let id : String?
let fops : [Fops]?
}
struct Fops : Codable {
let sku : String?
let hash : Int?
let product : Product?
}
struct Product : Codable {
let sku : String?
let name : String?
let price : Price?
}
struct Price : Codable {
let current : Double?
let lpp : Bool?
let unit : Unit?
let type : String?
}
struct finalSetOfItems{
let name : String?
let price: String?
}
var array1 = [Items]()
var array2 = [SecondSetOfItems]()
// Originally tried:-
var multiArray = [[AnyObject]]()
multiArray.append(array1 as [AnyObject])
multiArray.append(array2 as [AnyObject])
// This part errors because I can't access this property
let name = multiArray[1][1].name
// Also tried a ternary operator (this part is within cellforrowat in my UITableViewController but I want the data to be dynamic, and not hard coded.
let name = indexPath.section == 0 ? array1![indexPath.row].name : array2![0].sections![0].fops![indexPath.row].product!.name
Но тогда я не смог получить доступ к свойствам массивов, так как имена были слишком неоднозначными, и, поскольку я использую несколько типов данных, трудно укажите, что именно я ищу.
Второй набор данных значительно сложнее (и глубже), чем первый набор.
Желаемый результат: -
// Take complex array1 and array2 and change them into a type of finalSetOfItems
var array1 = [Items]()
var array2 = [SecondSetOfItems]()
var arrayOutput = [finalSetOfItems]()
Есть ли способ, которым я могу преобразовать оба набора данных в единый структурный тип, чтобы легче было получить доступ к свойствам? Конечная цель состоит в том, чтобы привести каждый массив в отдельный раздел в UITableView, чтобы указать, откуда поступили данные
Извинения, если мой вопрос сформулирован плохо, я все еще относительно новичок в Swift. Любая помощь будет принята с благодарностью