• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ios > (swift)asNSArray和as!NSArray和asNSArray!有什么区别?

(swift)asNSArray和as!NSArray和asNSArray!有什么区别?

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-05

佚名通过本文主要向大家介绍了nsarray,ios nsarray,nsarray 排序,nsarray 初始化,swift as等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: (swift)as NSArray 和 as! NSArray 和 as NSArray! 有什么区别?
描述:

//加载xib view
class func loadViewFromNibNamed(_ nibName:String, owner: AnyObject?, options: [AnyHashable: Any]?) -> AnyObject{
        
    let nibs: NSArray = Bundle.main.loadNibNamed(nibName, owner: owner, options: options) as NSArray!
        
    return nibs.object(at: 0) as AnyObject
}

下面这句,as! NSArray就会报警告,as NSArray!就可以。请问各位大哥,具体两个表达方式有什么区别,另外还有as NSArray 呢?
let nibs: NSArray = Bundle.main.loadNibNamed(nibName, owner: owner, options: options) as NSArray!


解决方案1:

首先,要明白 as! 和NSArray! 这两个感叹号代表的是不同的概念。as! 代表强制转类型,而NSArray!代表这个对象一定有值,不为空。

Bundle.main.loadNibNamed(nibName, owner: owner, options: options) 返回的类型是 , [Any]?

这是Array的option类型,说明这个值有可能是空的。即为nil。

所以在as! Array 的意思就是强制把Array?转为Array,所以会报警报,因为编译器认为可能会出现nil值,会出现错误。即编译器认为,这个转类型是会出现错误的。

而使用 as Array! 相当于我们告诉编译器,上述返回的值一定不为空,这个转类型是一定不会出问题的。我们对nibs这个使用!进行了强制解包,as这里的作用就是一个类型转换的作用。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • (swift)asNSArray和as!NSArray和asNSArray!有什么区别?
  • 透明内裤裆可以看到毛iOSNSArray可以指定内容对象吗?

相关文章

  • 2017-06-05 成员变量成员变量如何赋值的
  • 2017-06-05 Alamofire如何将request添加到一个队列里面,顺序执行??
  • 2017-06-05 (swift)ios网易云音乐app的素材图片图标要怎么导出来?
  • 2017-06-05 怎么修改ios上微信浏览器title标签
  • 2017-06-05 产品需求写一个tableView每一个cell的倒计时功能,求设计思路
  • 2017-06-05 指数函数与对数函数swift3函数参数的问题
  • 2017-06-05 UIActivityViewController分享
  • 2017-06-05 如果延长apple-touch-startup-image显示的时间
  • 2017-06-05 swift新手请教,我在swift中调用selfinit,报错了,怎么回事?
  • 2017-06-05 关于IOS下多核编程问题OpenMp(高分)

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 如何获取UITableView编辑模式下的系统自带手势?
    • 移动端布局的问题
    • JS调用OC方法求教
    • iOS基础控件iOS中UITextView字数统计中英?
    • $PROJECT_DIR与$SRCROOT在Xcode的实际开发中有什么区别
    • IOS关于如何将APP1嵌入到APP2中的需求。希望大神给个思路。
    • iOS执行drawLayer:incontext,pop操作后闪退
    • iOS远程推送ios推送服务平台哪个好点?
    • 旧工程要适配iOS10,使用UserNotifications框架中的类时编译报错,但是新建工程时则没有任何问题。为什么?
    • iospush切换视图的时候,返回时,怎样自定义动画?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有