
class BannerResponse : NSObject{ let URL = "Url"; let CONTACT_NO = "ContactNo"; let IMAGE = "Image"; let BIG_IMAGE = "BigImage"; let ID = "ID"; let Title = "Title"; let NO_VIEW = "NoVIEw"; let START_DATE = "StartDate"; let END_DATE = "EndDate"; var url:String; var contactNo:String; var image:String; var bigImage:String; var Title:String; var ID:Int; var noVIEw:Int; var startDate:String; var endDate:String; init(data : NSDictionary){ url = data[URL] as! String; contactNo = data[CONTACT_NO] as! String; image = data[IMAGE] as! String; bigImage = data[BIG_IMAGE] as! String; Title = data[Title] as! String; ID = data[ID] as! Int; noVIEw = data[NO_VIEW] as! Int; startDate = data[START_DATE] as! String; endDate = data[END_DATE] as! String; }} 当我运行代码时,我得到以下错误
Could not cast value of type 'NSNull' (0x10a85f378) to 'Nsstring' (0x109eccb20).
编辑
do { if let Json = try NSJsONSerialization.JsONObjectWithData(data!,options: NSJsONReadingOptions.MutableContainers) as? NSDictionary{ onSuccess(BannerResponse(data: Json)) } } catch { onFail() }解决方法 你的一个数据[SOME_KEY]的类型是NSNull而不是String,因为你正在使用强制转换为String!该应用程序崩溃. 你可以做以下两件事之一:
>将BannerResponse类的变量更改为可选.用吗?代替 !在init方法中设置值时.像这样:
`
var Title: String?init(data: NSDictionary) { self.Title = data[Title] as? String} 要么
>使用?代替 !在init方法中设置值但在dict [SOME_KEY]为nil或不是预期类型时设置默认值.这看起来像这样:
`
if let Title = data[Title] as? String { self.Title = Title}else{ self.Title = "default Title"}// Shorthand would be: // self.Title = data[Title] as? String ?? "default Title" 我想第三件事是确保服务器永远不会发送空值.但这是不切实际的,因为从来没有这样的事情.您应该编写客户端代码,以假设JsON中的每个值都可以为null或意外类型.
总结以上是内存溢出为你收集整理的ios – 在解析swift中的Json时无法将’NSNull’类型的值转换为’NSString’全部内容,希望文章能够帮你解决ios – 在解析swift中的Json时无法将’NSNull’类型的值转换为’NSString’所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)