Ios 打印徽章时去掉可选选项

Ios 打印徽章时去掉可选选项,ios,swift3,Ios,Swift3,我正在获取数组的计数并将其作为徽章值,但其显示在徽章中是可选的(例如,5)。如何解决此问题 let vals2: String? = String(describing: store?.data?.newsArticles?.count) print(vals2!) self.newsTabBarItem.badgeValue = vals2! self.menuList = (store?.data?.newsArticles)! 是可选的,然后 store?.data?.newsArtic

我正在获取
数组的计数
并将其作为
徽章
值,但其显示在徽章中是可选的(例如,5)。如何解决此问题

let vals2: String? = String(describing: store?.data?.newsArticles?.count)
print(vals2!)
self.newsTabBarItem.badgeValue = vals2!
self.menuList = (store?.data?.newsArticles)!
是可选的,然后

store?.data?.newsArticles?.count
将等于
“可选(3)”
,其类型将为
字符串
而不是
字符串?
。您需要展开
计数
,而不是
VAL2

String(describing: store?.data?.newsArticles?.count)
如果您的代码需要
新闻文章
,则更好:

let newsArticles = store?.data?.newsArticles // newsArticles is an Optional
let vals2: String = String(describing: newsArticles!.count)
print(vals2)
self.newsTabBarItem.badgeValue = vals2
self.menuList = newsArticles!

您将在该调用中获得您的
可选(n)

if let newsArticles = store?.data?.newsArticles { // newsArticles won't be an Optional
    let vals2 = String(describing: newsArticles.count)
    print(vals2)
    self.newsTabBarItem.badgeValue = vals2
    self.menuList = newsArticles
}
因为您要的是
可选
的说明

你可以试试这个:

String(describing: store?.data?.newsArticles?.count)

我在map上遇到一个错误,int类型的值没有成员映射。你能截取有错误的代码(与map一起)的屏幕截图吗?并检查
计数后是否没有
.count.map
,而不是
.count?.map
let vals2: String? = store?.data?.newsArticles?.count.map { count in
    String(describing: count)
}
self.newsTabBarItem.badgeValue = vals2 // don't use `!` here