Помощник функционирует для безопасного преобразования из строк

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "part", for: indexPath) as! partsTableCell

let part = partList[0]

cell.a.text = String(part.a)
cell.b.text = part.b
cell.c.text = part.c
cell.d.text = part.d
cell.e.text = part.e
cell.f.text = part.f

self.tableView.rowHeight = 250
cell.layer.borderColor = UIColor.darkGray.cgColor
cell.layer.borderWidth = 1
cell.layer.cornerRadius = 5
cell.clipsToBounds = true

// give tag to your button and add target
cell.myButton.tag = indexPath.row
cell.myButton.addTarget(self, action: #selector(myButtonAction), for: .touchUpInside)

return cell

}

@objc func myButtonAction(sender:UIButton)  {
// in button action do your stuff like below

let part = partList[sender.tag]

let detailVC = UIStoryboard(name: "YourStoryBoard", bundle: nil).instantiateViewController(withIdentifier: "partDetail") as! PartsVCDetail
detailVC?.a = part.a!
detailVC?.b = part.b!
detailVC?.c = part.c!
detailVC?.d = part.d!
detailVC?.e = part.e!
detailVC?.f = part.f
self.navigationController?.pushViewController(detailVC, animated: true)

}

10
задан Shog9 14 January 2009 в 17:34
поделиться

3 ответа

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

К счастью, можно легко записать служебный метод преобразовать строковое представление числового значения, пустая строка пустая, или пустая строка к любому выходному типу:

public static T SafeConvert<T>(string s, T defaultValue)
{
    if ( string.IsNullOrEmpty(s) )
        return defaultValue;
    return (T)Convert.ChangeType(s, typeof(T));
}

Использование:

SafeConvert(null, 0.0) == 0.0;
SafeConvert("", 0.0) == 0.0;
SafeConvert("0", 0.0) == 0.0;

Этот общий метод берет свой тип возврата от типа второго аргумента, который используется в качестве значения по умолчанию, когда переданная строка является пустой или пустой. Передача 0 и Вы добрались бы In32 назад. Передача 0L, Int64. И так далее...

35
ответ дан 3 December 2019 в 13:41
поделиться

В C# большинство типов данных не nullable (числа, даты, и т.д.), только строки являются nullables. Если Вы получите данные из DB, то Вы будете вероятный работать с Nullable, или его версией синтаксической в сахаре, интервалом?, дважды?, DateTime?, и т.д.

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

Что касается строк, у Вас есть Строка. IsNullOrEmpty (ул.) функция.

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

public static string ValueOrDefault(this string str) 
{
     if (String.IsNullOrEmpty(str)) return MY_DEFAULT_VALUE;
     else return str;
}
6
ответ дан 3 December 2019 в 13:41
поделиться

Существует класс под названием, Преобразовывают в библиотеке.NET. Это имеет функции, которые позволяют Вам преобразовывать в то, в чем Вы нуждаетесь от любого базового типа и нескольких общих классов (как DateTime.)

Это в основном работает как Преобразование. ToInt32(val);

Править: Я действительно должен учиться читать все слова. Не поймал беспокойство о пустом указателе... существует оператор для этого. Можно ли использовать?? проверить на пустой указатель и обеспечить значение по умолчанию однако так, чтобы мог бы работать.

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

1
ответ дан 3 December 2019 в 13:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: