Swift 优化级别破坏了 NSArray 到 Array 的转换

2024-04-22

以下(有点人为的)代码在以下情况下有效:快速优化级别被设定为无 [-Onone](默认用于调试):

    let nsa = NSArray(array: ["foo", "bar"])
    let a = nsa as [String]

但应用程序崩溃了(崩溃日志 http://pastebin.com/fdn20buk)在运行时设置为最快[-O](默认发布)。

我幸运地发现我可以通过这样做来解决这个问题:

    let a = nsa as [AnyObject] as [String]

我的问题有两个:

  1. 你能帮我理解为什么会发生这种情况吗?
  2. 有没有更好的方法将 NSArray 转换为 Array?

UPDATE

这似乎确实是一个错误。我还没有向苹果报告此事。如果其他人愿意花时间这样做,请这样做!


Xcode 上似乎已修复Version 6.3.1 (6D1002).

而且,这不是您最初问题的答案,而是随着新的 Swift 1.2 的引入,as是强制转换,现在被更明确的取代as!。您应该期待NSArray to Array<T> where T != AnyObject or NSObject坠毁。

你最好使用条件转换as?. Avoid !任何时候都有可能。

let nsa = NSArray(array: ["foo", "bar"])
if let a = nsa as? [String] {
    println("a \(a)")
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Swift 优化级别破坏了 NSArray 到 Array 的转换 的相关文章

  • iOS 11 浮动 TableView 标题

    有一个应用程序包含多个部分 展开 时每个部分有几行 折叠 时没有 每个部分都有一个部分标题 使用以下子类重用它们UITableViewHeaderFooterView等等 到目前为止一切顺利 然后在 iOS 11 中 我使用了可视化调试器
  • 如何在 Swift Playgrounds 中获得弹出对话框

    我想知道如何在 Swift 中弹出一个对话框游乐场 是的 必须在 Playgrounds 中 我尝试了以下代码 直接来自 AppleDevs 站点 然而 无论我如何尝试 self tag always抛出错误 谁能帮我这个 import U
  • 快速钥匙串更新只有在第二次尝试时才起作用

    您好 我在更新存储在钥匙串中的登录信息方面遇到了 iOS 钥匙串的一个非常奇怪的问题 因此 如果没有保存的凭据 则正确运行保存函数会保存登录信息 如果登录信息已存在并且用户更新了密码 则更新功能仅正确更新密码 但是 如果登录信息存在并且我尝
  • iOS 13 检查 CLLocationManager 的临时授权状态

    根据 WWDC 视频 https developer apple com videos play wwdc2019 705 https developer apple com videos play wwdc2019 705 当你要求 Al
  • UITesting、XCTest 当前 ViewController 类

    简单的问题 我有一个按钮可以执行到下一个视图控制器的操作 我想写 UI XCTest 来告诉我它是否打开了我想要的视图控制器 UI 测试框架无法访问您的应用程序代码 这使得无法对实例进行类断言 你不能够directly告诉屏幕上的控制器的类
  • Swift:检查 UISearchBar.text 是否包含 url

    如何检查 UISearchBar text 是否包含 URL 我想做这样的事情 if searchBar text NSTextCheckingType Link 但我收到错误 String is not convertible to NS
  • 领域:结果 和列表

    是否可以转换Results
  • 删除派生数据文件夹后,Xcode 不断重新创建派生数据文件夹

    自动完成功能在 Xcode 6 中不再起作用 我四处搜索 发现删除派生数据文件夹可以解决此问题 每次我删除它时 它都会回来 然后就不会再自动完成了 有什么建议么 Thanks 没关系 我解决了这个问题 我没有声明需要在类内的方法中使用的变量
  • 为 Swift 对象/属性设置观察者

    我一直在寻找一种在连接到 Mac 的显示器数量发生变化时触发方法的方法 我知道我可以获得 NSScreen screens count 的值 但我需要找到一种方法来在该值发生变化时创建通知或其他内容 或者指示所连接的显示器数量发生变化的其他
  • 调用 SwiftUI 中位置 #11、#12 处的额外参数 [重复]

    这个问题在这里已经有答案了 我在 SwiftUI 中的切换开关上不断收到 调用中位置 11 12 处有额外参数 错误 我见过其他人有 调用中的额外参数 错误 但答案似乎没有帮助 另外 我的错误是 位置 11 12 我还没有看到其他人发生这种
  • Xcode 10 Beta 5 — clang:错误:链接器命令失败,退出代码为 1

    有人可以帮我吗 我的项目一切正常 但更新到 Xcode10 Beta5 后 尝试在 iPhone 上运行该应用程序时出现此错误 然而模拟器可以工作 请帮助我 我已经对这个问题进行了网络搜索并发现this https stackoverflo
  • iOS 防止计时器 UILabel 在数字变化时“晃动”

    我有一个UILabel它以以下格式显示计时器的输出MM ss SS 分 秒 厘秒 但是随着厘秒宽度的变化 它从左向右 摇动 例如 11 比 33 窄 有什么办法可以减轻这种情况吗 我尝试过将其居中 给它固定的宽度 但它们似乎没有帮助 从iO
  • ios - Gamekit 的 GKOctree 未找到元素

    我正在尝试使用GKOctree https developer apple com documentation gameplaykit gkoctree用于高效检索 3D 空间中的对象 然而 以下代码似乎没有按预期工作 import Gam
  • 设置/覆盖 UICollectionView 中单元格之间的填充

    我有一个 UICollectionView 但在获取单元格之间的填充时遇到了问题 理论上 我应该能够将屏幕除以 4 并且我可以获得包含 4 个图像的单元格大小 完美地占据屏幕宽度 但是 它选择不这样做 相反 它会创建 3 个具有巨大填充的图
  • 检测 AVAudioPlayer 中的播放结束

    我有几个短的 mp3 声音 我将它们存储在数组中 并希望连续播放它们 有什么方法可以检测 AVAudioPlayer 何时停止播放 以便我可以调用完成处理程序并播放下一个声音 我知道有一个委托 但我正在使用 Playground 和 SKS
  • 如何防止Apple Watch进入睡眠状态?

    我们正在开发一个 Apple Watch 项目 但如果不被打扰 手表就会进入睡眠状态 有什么办法可以阻止它进入睡眠状态吗 据我所知和有关该主题的其他搜索 目前还没有api可通过编程方式启用或禁用 Apple Watch 的睡眠模式
  • 如何在 Swift 中获取字典中最后输入的值?

    如何获取 Swift 字典中最后输入的值 例如 我如何从下面获取值 CCC var dictionary Dictionary
  • 在真实设备上展示测试广告

    这是我的代码 let request GADRequest request testDevices kGADSimulatorID XXXX2F32d69CCA859FFB559D0FEA3CF6483D08A6 adView load r
  • 致命错误:在字典中发现“地理编码地标”类型的重复键。 (Mapbox 地理编码器)

    我引用 这通常意味着要么该类型违反了 Hashable 的要求 要么此类字典的成员在插入后发生了变化 我正在使用 Mapbox Geocoder 当发生此运行时错误时 我的 XCode 将我带到线程 1 0 swift runtime on
  • init 中的 Swift 通用约束

    我有通用的 我希望能够用特定的约束来初始化它 约束仅用于初始化 班里的其他人并不关心 这是一个简化的示例 struct Generic

随机推荐

  • 在表上运行查询时 group_concat 被切断

    I have a table that looks likes this 该表包含 343 行 我正在尝试对其运行此查询 create table newTest2 select function name service name min
  • Git 提交作者信息 - Christian S. 到底是谁?

    我最近开始使用 git 我尝试按照设置用户信息的说明进行操作 但似乎出现了严重错误 test h git config list user name MY NAME user email MY EMAIL core repositoryfo
  • Meteor 访问令牌

    使用时Meteor http meteor com 与新的验证 https github com meteor meteor tree auth系统 我怎样才能获得facebook访问令牌 当登录时accounts facebook包裹 从
  • Silverlight 4:在 DataTemplate 中使用转换器时出现“无效的 XAML”

    也许你可以帮助我理解为什么当我尝试在 Visual Studio 2010 设计器中执行以下操作时收到未处理的异常 无效 XAML Page 我有一个Converter named DateTimeConverter将日期转换为德语日期字符
  • 在 C# .NET 中使用操作系统的文件类型映像

    我可以以某种方式使用操作系统中的文件类型图像并将其显示在我的应用程序中吗 如果您知道所需图标的文件的文件名 则可以使用ExtractAssociatedIcon http msdn microsoft com en us library s
  • “路径”参数值无效:不存在文件

    正如提到的Terraform 资源 执行应用时出现连接错误 https stackoverflow com questions 63613944 terraform resource connection error while execu
  • 自定义视图中的波纹效果

    我目前正在创建一个 Android 视图 其中当用户点击它时 我将在点击的坐标周围显示一种波纹 但我不确定该怎么做 我的第一个想法是使缓存无效并每次都使圆圈变大 但这样做似乎不合适也不高效 如果有人以前遇到过同样的问题并且愿意分享一些如何做
  • 独立启用/禁用功能区控件

    我已经多次寻找解决方案 最接近的解决方案是 Ron de Bruinexample http www rondebruin nl win s2 win013 htm但它并没有涵盖我所需要的 我想做的基本上是两件事 示例 我有 4 个按钮 G
  • 如何更改 Android 应用程序的主题?

    我正在开发一个 Android 应用程序 我想更改应用程序的颜色和主题 我怎样才能做到这一点 开发指南解释了如何应用主题和样式 http developer android com intl de guide topics ui theme
  • LUCENE:搜索与正则表达式匹配的术语

    我需要搜索 lucene 索引中的任何术语 匹配特定的正则表达式 我知道我可以使用TermsComponent在solr中 如果配置如下
  • 如何在javascript中创建没有键的json对象数组

    我想创建一个没有键的 JSON 对象数组 如何实现这一点 例如 8 0 2 20 0 2 var hh 9 var mm 8 var qty 2 var data data push hh mm qty 它给出的数据如下 hh 9 mm 8
  • 在特定 WordPress 页面上发送 404 状态代码?

    我需要在 WordPress 的特定页面上发送 404 状态代码 该页面未使用 404 php 模板 最好 我想在我的主题文件中执行此操作 而不是使用 htaccess 这是我所拥有的不起作用的东西 function my 404 if i
  • Kafka 中的“__consumer_offsets”主题是什么

    当我运行此命令时 我得到 2 个主题 我知道我创建了测试主题 但我看到了一个名为 consumer offsets 的附加主题 从名称上看 它与消费者抵消有关 但它是如何使用的呢 bin kafka topics sh list zooke
  • 停止 Spinner.js

    我正在使用 spin js http fgnass github com spin js http fgnass github com spin js 同时加载大的全宽 高图像 问题是我无法停止旋转器 stop 方法似乎不起作用 这就是我所
  • Android Web 视图中的动态进度条

    您好 我如何在其中添加页面加载进度 当页面完全加载时 进度条应该向上 我想将代码放在 case 语句中 提前致谢 这是代码 package com menu import android app Activity import androi
  • PHP 如何在没有 system() 或 exec() 的情况下 ping 服务器

    我正在尝试 ping 服务器 但我的主机被禁用exec and system 由于安全原因 是否还有其他选项可以让它工作 或者我是否必须要求我的主机启用它们 我得到的错误 警告 出于安全原因 system 已被禁用警告 出于安全原因 exe
  • 无法解决 select 语句中第 5 列的排序规则冲突

    我试图将多个字段的组合显示为一个 客户要求我这样做 我尝试了以下命令 但收到上述错误 SQL 片段 SELECT dbo VPayment 2 Serial dbo VPayment 1 Description dbo VPayment 2
  • 在Python中循环多个字典的最佳方法

    我搬字典 user name Bob age 11 place moon dob 12 12 12 user1 name John age 13 place Earth dob 12 12 12 通过加 1 循环遍历每个用户的最佳方法是什么
  • PHP 是如何工作的以及它的架构是什么?

    伙计们 最近我决定回到 PHP 并做一些比简单登录页面更复杂的事情 三年来我一直使用 Java JavaEE 进行编程 并且对 Java 应用程序的架构有很好的理解 基本上 一个虚拟机 一个简单的操作系统进程 运行称为字节码的编译代码 一个
  • Swift 优化级别破坏了 NSArray 到 Array 的转换

    以下 有点人为的 代码在以下情况下有效 快速优化级别被设定为无 Onone 默认用于调试 let nsa NSArray array foo bar let a nsa as String 但应用程序崩溃了 崩溃日志 http pasteb