Как импортировать массив tableViewControler функции

Я осуществляет представление таблицы в tableViewControler в быстром проекте. Я создаю два массива из JSON вызова в метод viewDidLoad и все в метод viewDidLoad функция работает отлично. вот моя функция метод viewDidLoad

первый массивов и переменных такой

var imageList = ["usaflag","gerflag","franceflag","jpflag","gerflag"]

    var titleList = ["Croatian kuna","Hungarian forint","Congolese franc","Israeli Shekel","Nigerian naira"]

    var descriptionList = ["HRK","HUF","CDF","ILS","NGN"]





    var myCurrency:[String] = []
    var myValues:[Double] = []

    var aCheckEuro:Double = 0

    var resultCurrency:Double = 0

    var activeCurrency:Double = 0
    var zeroOriginActiveCurrency:Double = 0
    var oneDestActiveCurrency:Double = 0




    var currencySelected:String = ""
    var zeroOriginCurrencySelected:String = ""
    var oneDestCurrencySelected:String = ""

и метод viewDidLoad здесь

override func viewDidLoad() {
        super.viewDidLoad()


        let url = URL(string: "http://data.fixer.io/api/latest?access_key=....")


        let task = URLSession.shared.dataTask(with: url!) { (data, response, error) in


            if (error != nil)
            {
                print("ERROR")
            }
            else
            {

                if let content = data
                {
                    do
                    {
                        let myJson = try JSONSerialization.jsonObject(with: content, options: JSONSerialization.ReadingOptions.mutableContainers) as AnyObject

                        print(myJson)

                        if let rates = myJson["rates"] as? NSDictionary
                        {
                            for (key, value) in rates
                            {
                                self.myCurrency.append((key as! String))
                                self.myValues.append((value as? Double)!)
                            }
                            print(self.myCurrency)
                            print(self.myValues)
                        }

                    }
                    catch
                    {
                    }

                }

            }

        }
        task.resume()
        }

как я сказал, Пока здесь все работает нормально. все это в в . проблема в этой функции

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {




        let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! TableViewCell

        // Configure the cell...

        cell.cellTitle.text = titleList[indexPath.row]
        cell.cellDescription.text = descriptionList[indexPath.row]

        cell.cellImageView.image = UIImage(named : imageList[indexPath.row])


        cell.currencyCount.text = myCurrency[indexPath.row] // here has fatal erroe

        return cell
    }

последняя строка

 cell.currencyCount.text = myCurrency[indexPath.row]

роковые ошибки и я не знаю, как ее решить.Я должен упомянуть, что -это метка. Я очень ценю любую помощь. спасибо .

0
2019-09-17 21:17:39
источник
2 ответа
=ARRAYFORMULA(SORT(
 TRANSPOSE(SPLIT(REPT(CONCATENATE(A1:A&CHAR(9)); COUNTA(B1:B)); CHAR(9)))&
 TRANSPOSE(SPLIT(CONCATENATE(REPT(B1:B&CHAR(9); COUNTA(A1:A))); CHAR(9)))))

0

+1
2019-09-17 21:45:56

Код использует ASCII вместо литералов Unicode для локализованных строк. Раствор не добавлять префикс N, хотя. Лучшим вариантом является использование параметризованных запросов.

Это выглядит как код эф 6.2. Базы данных.SQL-запрос принимает параметры. Код следует менять по крайней мере :

var query= @"Select islemtipi, sum(AlcT), sum(BrcT), sum(KdvTop), sum(iskonto) 
             from carih Where FirmaKodu [email protected]
             and islemtipi = @item1 or islemtipi [email protected] or islemtipi = @item3
    or islemtipi = @item4 and (Tarih>= @from  and Tarih <[email protected])
    group by islemtipi";
var rapor = db.Database.SqlQuery<ENT_carih>(query,
                new SqlParameter("@code","001"),
                new SqlParameter("@item1","Satış Faturası"),
                ...
                new SqlParameter("@from",fromDate.Date),
                new SqlParameter("@to",toDate.Date),
            ).ToList();

EF будет генерировать правильный параметризованного запроса от этого и пропуск строки в Юникоде (тип nvarchar) параметров. Цифры, даты и т. д. будут переданы в строго типизированные параметры. Если и параметры должны быть date вместо , можно создать date типизированного параметра, с одним из конструкторов, который принимает тип данных :

new SqlParameter("@from",SqlDbType.Date) { Value=fromDate.Date}

Запрос не очень сложный, хотя и может быть написано с помощью LINQ. Предполагая, что -это в dbset можно было бы написать :

var results = db.Carih.Where(c=>c.FirmaKodu=someCode && c.islemtipi=someItem &&....)
                .GroupBy(c=>c.islemtipi)
                .Select(grp=>new { islemtipi=grp.Key,
                                   AlcT=grp.Sum(c=>c.AlcT),
                                   ...
                                 });

Кстати, исходный запрос-это немного странно. Он фильтрует по или один из других вариантов. Я подозреваю, что правильное условие будет :

Where FirmaKodu ='001'
     and islemtipi IN ('Satış Faturası',...)
     and (Tarih>= '2019-01-01'  and Tarih <='2019-12-31')

Для формирования . П. в LINQ, нужно поставить все элементы в контейнере и используйте container.Contains(someField) :

var items=new[]{"...","..."};
var results = db.Carih.Where(c=>c.FirmaKodu=someCode
                                && items.Contains(c.islemtipi) 
                                && c.Tarih>=fromDate.Date
                                && c.Tarih<=toDate.Date)
                .GroupBy(c=>c.islemtipi)
                .Select(grp=>new { islemtipi=grp.Key,
                                   AlcT=grp.Sum(c=>c.AlcT),
                                   ...
                                 });
+1
2019-09-17 22:15:36

Посмотрите другие вопросы по меткам