2016-06-05 2 views
0

Я пытался отобразить в метке извлеченное значение из ячейки в другой View Controllerне может бросить NSString в Label.text

Это деталь View Controller

var gg = NSDictionary() 
    var siteName = NSString() 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     siteName = gg["SiteName"]! as! NSString 
     print(siteName) 

     self.siteNameDetail.text = siteName as String 
    } 

Печать сайта название выдает значение отлично но когда вылил для siteNameDetail.text это дает эту ошибку

fatal error: unexpectedly found nil while unwrapping an Optional value 

Это гг извлекается из мастер-страницы

if (segue.identifier == "siteSegue"){ 
      let destview = segue.destinationViewController as! SiteViewController 
      destview.gg = sender as! NSDictionary 
     } 

ответ

1

ошибка не связана с литьем типа, указанного в заголовке.

Если в словаре нет ключа SiteName, принудительная разворачивание приводит к сбою приложения.

Необходимо проверить ключ с опциональным связыванием или с оператором коалесценции nil.

Используйте родные типы Свифт (String, Dictionary). Это делает вещи намного проще.

var gg = [String:AnyObject]() 
var siteName = "" 

override func viewDidLoad() { 
    super.viewDidLoad() 
    siteName = gg["SiteName"] as? String ?? "" 
    print(siteName) 

    self.siteNameDetail.text = siteName 
} 

PS: Избавиться от наследия ObjC, как и точка с запятой скобки вокруг if условий.

+0

SiteName Exists и print (имя_сайта) возвращает имя , но когда я пытаюсь поместить его внутри siteNameDetail.text, он дал мне ту же ошибку. попробовал ваш метод, но все та же ошибка – MuaathAli

+0

Тогда 'siteNameDetail', скорее всего,' nil' (Не подключен). Проверь это. – vadian

+0

Спасибо! это была проблема. – MuaathAli

0

В заявлении

self.siteNameDetail.text = siteName as String; 

само может быть нулевым, self.setNameDetail может быть нулевым, Имя_узла может быть нулевым, SiteName, как строка может быть равна нулю. Вы сделали какое-то предположение, к которому относится ошибка. Ваше предположение может быть неправильным.

+1

'self' не может быть' nil', – rmaddy

0

Почему вы хотите отличить NSString?

siteName = gg["SiteName"]! as! String 
    self.siteNameDetail.text = siteName 

Должно быть достаточно

+0

Все еще давая мне ошибку – MuaathAli

+0

Если печать сайтаName между двумя строками дает хорошую строку, то должно быть, что siteNameDetail не подключен должным образом, или это не метка? – FredericP