お互いに関連するアレイを作成するプロセスは一般的にどのようなプロセスですか?Swiftで2つのアレイを関連付ける方法
私がしようとしているのは、UITableViewに表示されるstores
とitems
の2つの配列を持つシンプルショッピングリストアプリケーションを作成することです。 stores
配列がメインのtableViewに表示され、items
配列がstores
配列の項目がタップされているときに詳細テーブルビューに表示されますが、これが通常どのように行われているか分かりません。 2次元配列(または1対多配列)の並べ替えが、私は少し混乱しています。
ここには、メインのtableViewにstores
配列を表示するコードがあります。
ストアクラス:
import Foundation
class Store{
var storeName = ""
}
アイテム・クラス:
import Foundation
class Item : Object{
var itemName: String = ""
var price: Double = 0
}
メインのViewController:
ストア:
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var storesTable: UITableView!
@IBOutlet weak var inputStoreName: UITextField!
var itemList = [Item]() // I'm not sure how to use this array
var storeList = [Store]()
override func viewDidLoad() {
super.viewDidLoad()
storesTable.dataSource = self
storesTable.delegate = self
}
@IBAction func addNewStore() {
let store = Store()
store.storeName = inputStoreName.text!
storeList.append(store)
storesTable.reloadData()
}
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return storeList.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "myCustomCell")! as UITableViewCell
let data = storeList[indexPath.row]
cell.textLabel?.text = "\(data.storeName)"
return cell
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "detailTableView"{
if let destination = segue.destination as? DetailTableViewController{
let selectedStore = storeList[(storesTable.indexPathForSelectedRow?.row)!].storeName
destination.messageFromMainController = selectedStore
}
}
}
}
あなたは何をしようとしているのか分かりませんが、 'stores'の要素がキーで、' items'のリストは値です。 – Carcigenicate
[Realm](https://realm.io/docs/swift/latest/)またはコアデータを試すことができます。レルムを例として使用すると、アイテムのリストを持つストアオブジェクトを作成できます。彼らはあなたがチェックアウトできる犬と所有者の関係を使用している例があります。 – JustinM
@JustinMそれは最終的に私の目標です、私はレルムを使用しますが、これはより良い理解を得るためのより簡単なステップだと思っていました。 –