Я работаю над приложением, в котором продавец может добавить группу товаров на вкладку лиц.
После выбора покупателя из табличного представления пользователь может увидеть список товаров и общую сумму, которую яхотел бы сохранить под этим именем клиентов, чтобы он пришел заплатить позже.Я провел много исследований об отношениях в CoreData, но не нашел способа сохранить много элементов одновременно.
Вот снимок экрана контроллера представления, показывающий покупателя и продукты, которые нужно добавить на его вкладку.
Добавить на вкладку контроллер представления
IМы создали модели данных, и все, и все отлично работает, просто не могу связать продукты для каждого клиента.Я хочу иметь возможность кликнуть на покупателя и увидеть все товары на его вкладке.Я провел недели, пытаясь найти ответ, и это очень расстраивает.Просто нужно иметь возможность сохранять и извлекать предметы, и мое приложение будет готово.
Очень жду ответа!
import UIKit
import MapKit
import GoogleSignIn
import CoreData
class addToTabViewController: UIViewController {
// Data Arrays
var myCart = [Cart]()
var myCartUz: [Cart] = []
var selectedIndex: Int!
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
var amount: String = ""
var transaction: String = ""
@IBOutlet weak var profilePicture: UIImageView!
@IBOutlet weak var customerName: UILabel!
@IBOutlet weak var phoneNumber: UILabel!
@IBOutlet weak var emailAddress: UILabel!
@IBOutlet weak var customerAddress: UILabel!
@IBOutlet weak var profileView: UIView!
@IBOutlet weak var map: MKMapView!
@IBOutlet weak var receiptView: UIView!
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var customerProfile: UIImageView!
@IBOutlet weak var customerProfileView: UIView!
@IBOutlet weak var totalAmount: UILabel!
@IBOutlet weak var merchantName: UILabel!
@IBOutlet weak var merchatEmail: UILabel!
// Variable
var customers: Cutomers!
override func viewDidLoad() {
super.viewDidLoad()
// Show data
configureEntryData(entry: customers)
fetchCartData()
totalAmount.text = amount
// Design parameters
hutzilopochtli()
}
// Info profile button
@IBAction func infoButton(_ sender: Any) {
profileView.isHidden = !profileView.isHidden
receiptView.isHidden = !receiptView.isHidden
customerProfileView.isHidden = !customerProfileView.isHidden
}
// Add to tab button
@IBAction func addToTabButton(_ sender: Any) {
}
// Show customer details
func configureEntryData(entry: Cutomers) {
let name = entry.name
let address = entry.address
let phone = entry.phoneNumber
let email = entry.email
customerName!.text = name
customerAddress!.text = address
phoneNumber!.text = phone
emailAddress!.text = email
self.title = name
let image = entry.profileicture as Data?
profilePicture!.image = UIImage(data: image!)
customerProfile!.image = UIImage(data: image!)
}
// Get cart data
func fetchCartData() {
do {
myCart = try context.fetch(Cart.fetchRequest())
myCartUz = myCart
DispatchQueue.main.async {
self.tableView.reloadData()
}
} catch {
}
merchantName?.text = GIDSignIn.sharedInstance().currentUser.profile.name
merchatEmail?.text = GIDSignIn.sharedInstance().currentUser.profile.email
}
// Design parameters function
func hutzilopochtli(){
profilePicture.roundMyCircle()
customerProfile.roundMyCircle()
profileView.layer.cornerRadius = 15
receiptView.layer.cornerRadius = 15
profileView.isHidden = true
map.layer.cornerRadius = 13
}
}
// Table view dataSource and delegates
extension addToTabViewController: UITableViewDataSource, UITableViewDelegate {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return myCartUz.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "discountCell", for: indexPath) as! discountTableViewCell
let price = myCartUz[indexPath.row].price
let xNSNumber = price as NSNumber
cell.productName?.text = myCartUz[indexPath.row].product
cell.amountLabel?.text = "IDR \(xNSNumber.stringValue)"
return cell
}
}
Вот класс клиента
class constantCustomer: NSObject {
private class func getContext() -> NSManagedObjectContext {
let appDelegate = UIApplication.shared.delegate as! AppDelegate
return appDelegate.persistentContainer.viewContext
}
class func saveObject(customerId: String, name: String, phone: String, address: String, email: String, picture: NSData) -> Bool {
let context = getContext()
let entity = NSEntityDescription.entity(forEntityName: "Cutomers", in: context)
let managedObject = NSManagedObject(entity: entity!, insertInto: context)
managedObject.setValue(customerId, forKey: "customerID")
managedObject.setValue(NSDate(), forKey: "date")
managedObject.setValue(name, forKey: "name")
managedObject.setValue(phone, forKey: "phoneNumber")
managedObject.setValue(address, forKey: "address")
managedObject.setValue(email, forKey: "email")
managedObject.setValue(picture, forKey: "profileicture")
do {
try context.save()
return true
} catch {
return false
}
}
class func fetchObject() -> [Cutomers]? {
let context = getContext()
var myCustomers: [Cutomers]? = nil
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Cutomers")
let sort = NSSortDescriptor(key: "date", ascending: true)
fetchRequest.sortDescriptors = [sort]
do {
myCustomers = try context.fetch(Cutomers.fetchRequest())
return myCustomers
} catch {
return myCustomers
}
}
}