Расчет с несколькими параметрами - PullRequest
0 голосов
/ 06 января 2020

(плохо знаком с кодированием в целом, извините, если я не использую правильный язык / логи c)

Я пытаюсь создать приложение-калькулятор для онлайн-продаж, которое позволит вам увидеть, сколько денег вы бы получить после сборов с разных сайтов. Я использовал UIPickerView для платформ продажи, где пользователь может выбрать, какой веб-сайт он хочет продать, а затем вывести на UITextField. Далее следует UIPickerView для уровня продавца в рамках торговых платформ, который затем связывается с другим UITextField (уровни продавца диктуют комиссию%, более высокие уровни означают более низкие комиссии).

До сих пор мне не удавалось создать несколько критериев, чтобы при платформе = x и уровне продавца = y это вывело бы значение уравнения. Когда я делал это в Excel, это было с if и функциями, например: if(and(platform = "StockX, seller level = 1),(List Price * (1-0.125),""). Очевидно, что Swift не является превосходным, поэтому я застрял здесь.

[извините, добавил код ниже, не совсем уверен, что это все, что вам нужно для диагностики проблемы, но приветствуется любое направление, спасибо!]

import UIKit

class ViewControllerTakeback: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource, UITextFieldDelegate {

var currentTextField = UITextField()
var pickerView = UIPickerView()
var levelTextField = UITextField()
var levelPickerView = UIPickerView()

var PlatformType:[String] = []
var Platform2Type:[String] = []
var PLevel:[String] = []
var PLevel2: [String] = []

//variables for criteria on the takeback calculation
var a = "StockX", b = "GOAT", c = "Stadium Goods", d = "Flight Club", e = "Grailed", f = "PayPal"
var aa = "1", bb = "2", cc = "3", dd = "4", ee = "Domestic", ff = "International", gg = "Invoice"

//text fields
@IBOutlet weak var platformTextField: UITextField!
@IBOutlet weak var platformTextField2: UITextField!
@IBOutlet weak var pLevelTextField: UITextField!
@IBOutlet weak var pLevel2TextField: UITextField!
@IBOutlet weak var takebackLabel: UILabel!
@IBOutlet weak var retailTextField: UITextField!

override func viewDidLoad() {
    super.viewDidLoad()
//data for platformTextField & platformTextField2 via pickerView
PlatformType = ["StockX","GOAT","Stadium Goods","Flight Club","Grailed","PayPal"]
Platform2Type = ["StockX","GOAT","Stadium Goods","Flight Club","Grailed","PayPal"]

//data for pLevelTextField & pLevel2TextField via pickerView
PLevel = ["1","2","3","4","5","Domestic","International","Invoice"]
PLevel2 = ["1","2","3","4","5","Domestic","International","Invoice"]
}

также прикрепили изображение приложения, чтобы увидеть, как работает поток. В идеале мне бы хотелось, чтобы вы могли получать информацию с двух разных веб-сайтов и сравнивать, какой из них лучше продать.

просмотр приложения просмотр приложения с комментариями

Ответы [ 3 ]

1 голос
/ 06 января 2020

Похоже, switch может быть полезно для вас. Ниже приведен пример того, как это может работать в вашем случае. Обратите внимание, что <platform> и <seller lever> будут заменены фактическими объявленными вами переменными.

switch(<platform>, <seller level>)
{
  case ("StockX", 1):
      //price equation
  case ("StockY", 2):
      //price equation
  default:
      //price equation
}
0 голосов
/ 06 января 2020

На самом деле, то, как вы это делали в Excel, сработало бы и в Swift (большой IF или переключатель). Но было бы гораздо круче и Swiftier иметь справочную таблицу, в которой вы можете ввести платформу и уровень и извлечь множитель или даже множитель function (поскольку функции являются гражданами первого класса в Swift).

0 голосов
/ 06 января 2020

Если я правильно понимаю вашу проблему, я бы создал несколько контейнеров. Контейнер (массив или словарь) для уровня продавца-> гонорар, Один для веб-сайта-> Not-sure-in-your-example. Затем вы можете создать элементы UIPickerView из этих контейнеров и использовать предписанные номера, прикрепленные к контейнерам для расчета

...