2016-07-22 2 views
1

У меня есть имя строки, которое, по-видимому, является необязательным именем. Мне нужно установить это в текстовую метку. Но это как-то не работает, как в пользовательском интерфейсе, текст не задан. Когда я распечатываю строку, развернутую, она выглядит отлично. Но когда я установил строку, развернутую в файл uitextlabel.text, и напечатал ее, это кажется не очень хорошим, поскольку по-прежнему появляется ключевое слово optional. Как я могу правильно отнести эту строку, которая была развернута в uitextlabel.text?Как установить необязательную строку как текст в UiTextLabel?

var name : String? 

override func viewDidLoad() { 
    super.viewDidLoad() 
    print("School detail view loaded and print address") 


    let rect = view.bounds 

    //set header and footer 
    // schoolNameLabel.text = "set value 1" 
// print(schoolNameLabel.text) 

    if let unwrapped = self.name { 
     print("print unwrapped") 
     print(unwrapped) 

     schoolNameLabel.text = unwrapped 
     print("print label.text") 
     print(schoolNameLabel.text) 

    } 

Вывод на консоль:

print unwrapped 
Milner college 

print label.text 
Optional("Milner college") 
+0

Ключевое слово 'Optional' в консоли - это просто сказать, что объект object является необязательным объектом (может быть' nil'). Вы не имеете к этому никакого отношения. Всякий раз, когда вы показываете содержимое этого объекта, независимо от его значения или нет, консоль покажет: «Необязательный (« xxxx ») –

ответ

0
print(schoolNameLabel.text!) //add this ! optional sign.. becuase that textfiled text value may be null 
1
if let unwrapped = self.name! { 

попытаться сохранить его в развернутый действительно, как развернутый, так что не пропустите "!"

2

Вам не нужно это делать. Я предполагаю, что ваш schoolNameLabel является UILabel. Свойство text из UILabel объявлен как:

var text: String? 

(UILabel Class Reference)

Таким образом, любая неопциональные String автоматически преобразуются в String?. Хотя print всегда включает фактическое содержимое с помощью «Необязательно» («&») для значений, отличных от нуля, UILabel показывает фактический контент без «Необязательно».

И если «ничего не показывает, когда nil» - это то, что вы хотите, вам не нужно разворачивать String?.

Просто назначьте self.name к schoolNameLabel.text непосредственно:

schoolNameLabel.text = self.name 

Он никогда не выходит из строя вашего приложения, и просто "ничего не показывает", даже если self.name является nil.

Смежные вопросы