如何强制 Swift 可选数组(很好)

2024-01-29

使用斯威夫特 2.1

我正在寻找一种好方法将非可选类型数组分配给可选类型数组,其中类型相同。以下是我尝试过的一些方法:

var foos: [Int?] = []
let bars: [Int] = []

foos = bars // Error: Cannot assign value of type '[Int]' to type '[Int?]'
foos = bars as [Int?] // Error: Cannot convert value of type '[Int]' to type '[Int?]' in coercion
foos = bars as? [Int?] // Error: 'Int?' is not a subtype of 'Int'
foos = bars.map { $0 } // Works but I think there must be a better way

在 Swift 中将非可选类型分配给可选类型效果很好。我不明白为什么这不适用于数组。

var foo: Int? = nil
let bar: Int = 0

foo = bar // Works fine

有任何想法吗?


您可以使用几个看起来像类型转换的通用函数来使语法更容易接受:

var foos: [Int?]   = []
let bars: [Int]    = []
let fums: [Int64?] = []

func CastArray<T, U>(array:[T?]) -> [U?]
{ return array.map({ $0 as! U? }) } 

func CastArray<T, U>(array:[T]) -> [U?]
{ return array.map({ $0 as? U }) } 

foos = CastArray(bars)
foos = CastArray(fums)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何强制 Swift 可选数组(很好) 的相关文章

  • 使用 Push Transition 效果更改 RootViewcontroller

    在我的iOS应用程序中 我需要更改应用程序之间窗口的rootviewController 因此 当我动态更改我的rootviewcontroller时 它会在更改之前轻拂视图 但我想要的是在更改rootviewcontroller时提供平滑
  • iOS 4.2.1 丢失文件?

    这是我第一次使用最新的 xcode 3 2 5 和新的 iOS 4 2 1 当我在设备上运行应用程序时 我收到以下运行时错误 无法读取 Developer Platforms iPhoneOS platform DeviceSupport
  • 使用 UIActionSheet 更改视图时工具栏项目消失

    当从 a 启动视图时UIActionSheet按钮 通过导航栏后退按钮返回视图后 工具栏虽然仍然可见 但上面没有任何以前的按钮 自从更新到 iOS 6 以来 这个错误就出现了 并且是在模拟器和仅运行 iOS 6 的设备上测试时发生的 如果我
  • 在Python 3中将二进制字符串转换为字节数组

    尽管有很多相关的问题 但我找不到任何符合我的问题的问题 我想更改二进制字符串 例如 0110100001101001 转换成字节数组 同一个例子 b hi 我试过这个 bytes int i for i in 011010000110100
  • Swift 对异步编程有什么语言级别的支持(如果有)?

    当应用程序必须通过不可预测的网络 例如智能手机应用程序 进行通信时 异步编程对于响应式用户界面来说是必须的 用户界面必须保持响应 同时等待结果从互联网上某处的服务器返回 在大多数语言中 应用程序程序员必须实现自己的状态机 可能使用闭包 来响
  • UIBezierPath 的起始和结束角度?

    我在 iOS 中使用如下代码编写了半圆UI贝塞尔路径 and CAShape层 clockWiseLayer CAShapeLayer alloc init CGFloat startAngle M PI 2 CGFloat endAngl
  • 切换到工作区并在 Xcode 中添加 CocoaPods 后提交 git 吗?

    我刚刚在 Xcode 5 中将 CocoaPods 添加到我当前的项目中 当然 CocoaPods 创建了一个工作区 并且我已在 Xcode 中启动了该工作区 我在工作区中看到了我的项目和 Pods 项目 我的项目从第一天起就处于源代码控制
  • 使用 OpenCV 描述符与 findFundamentalMat 匹配

    我之前发布了有关同一程序的问题 但没有收到答案 我已经纠正了当时遇到的问题 但又面临新的问题 基本上 我使用未校准的方法自动校正立体图像对的旋转和平移 我使用 SURF 等特征检测算法来查找两个图像 左右立体图像对 中的点 然后再次使用 S
  • 更改 UITextField 辅助功能描述

    有没有办法将 UITextField 的辅助功能标签设置为 文本字段 之外的其他内容 因此 我不想将其称为 文本字段 而是将其命名为 代码验证字段 我的建议是不要试图在内置语音输出上智取系统 对于盲人用户来说 文本字段正在编辑 相当于 该项
  • 如何在 PHP 数组中的另一个已知(通过键或指针)元素之后有效地插入元素?

    给定一个数组 a array abc 123 k1 gt v1 k2 gt v2 78 tt k3 gt v3 当其内部指针指向其元素之一时 如何在当前元素之后插入元素 如何在键已知元素 例如 k1 之后插入元素 表现护理 您可以通过使用拆
  • 如何使用自签名证书为 TLS 创建 iOS NWConnection?

    我正在尝试将 Apple 的新 NWConnection 类用于我的 MQTT 客户端 为了进行测试 我需要能够创建到本地测试代理的 TLS 连接 该代理具有自签名证书 到目前为止 我只是使用以下命令设置连接 self connection
  • 在 Swift 中检查一个数组是否包含另一个数组的所有元素

    我想为数组编写一个扩展来检查一个数组是否包含另一个数组的所有元素 在我的用例中它是字符串对象 但我一直得到 Cannot convert value of type T Generator Element to expected argum
  • 如何在 Xcode 4 中通过一个操作归档多个目标

    我有一个包含多个目标的项目 这些目标都适用于不同的 iOS 应用程序 例如 一个用于精简版的目标 另一个用于专业版的目标 我想立即构建并归档我的所有应用程序 目前 我对每个目标都有一个方案 我用它来独立归档每个应用程序 但现在我必须开始归档
  • 如何在 EKRecurrenceRule 中设置一周中某一天的数组?

    我想在用户选择的特定日期每周添加事件 可以是一个或多个 也可以是一整天 我将用户选择的日期值存储在模型类变量中 但是 当我添加事件并选择日期时 假设今天是星期一 我选择星期二和星期三并保存 然后我查看周一和周三添加的 iPhone 日历 我
  • 具有多种自定义单元格类型的 RxSwift 表视图

    我想知道是否有任何代码示例RxSwift当我可以在一个表视图中使用多个自定义单元格时 例如 我有两个部分 第一部分有 10 个单元格 类型为CellWithImage标识符和第二部分有 10 个带有类型的单元格CellWithVideo标识
  • 按字典顺序对整数数组进行排序 C++

    我想按字典顺序对一个大整数数组 例如 100 万个元素 进行排序 Example input 100 21 22 99 1 927 sorted 1 100 21 22 927 99 我用最简单的方法做到了 将所有数字转换为字符串 非常昂贵
  • Swift 中 UIImages 的淡入淡出动画

    我有一组图像 我希望它们在登录屏幕的背景中淡出 我无法在 swift 中找到任何可以做到这一点的东西 有什么办法我可以做到吗 这是我当前的代码 override func viewDidLoad super viewDidLoad star
  • 从java中的字符串数组中删除空值

    java中如何从字符串数组中删除空值 String firstArray test1 test2 test4 我需要像这样没有 null 空 值的 firstArray String firstArray test1 test2 test4
  • 播放(非库)Apple Music 内容 - 请求失败

    我正在尝试使用以下代码播放专辑 let predicate MPMediaPropertyPredicate value 1459938538 forProperty MPMediaItemPropertyAlbumPersistentID
  • 将一维数组转换为二维数组[重复]

    这个问题在这里已经有答案了 我正在开发一个程序 我必须将文本文件中的值读入一维数组 我已经成功获取该一维数组中的数字 m1 1 2 3 4 5 6 7 8 9 但我希望数组是 m1 1 2 3 4 5 6 7 8 9 您可以使用此代码 co

随机推荐

  • Castle DynamicProxy 拦截器在处理不同程序集时出现问题

    我有一个这样的场景 我使用拦截器来捕获对主项目引用的程序集中的类 我们称之为功能 的调用 程序集功能由 NuGet 安装 它不是公开的 而是我们的内部程序集 并引用另一个程序集 我们称之为 Core 主要项目也引用了汇编核心 Core 包含
  • 如何向最终用户隐藏 Sonar 数据库凭据

    试图问这个 电子邮件受保护 cdn cgi l email protection但我的电子邮件地址似乎不允许发送到该列表 尽管已订阅 我正在尝试弄清楚如何构建一个集中的 托管的 SonarQube 服务 该服务将允许任何开发人员向该服务提交
  • Apple MapKit 3D 立交桥

    是否有任何公共 iOS 8 API 可用于实现 3D 飞行或至少 3D 视图 如下面的 Apple 地图应用程序屏幕截图所示 Update 经过以下建议后 我完成了以下代码 import UIKit import MapKit class
  • 使用python登录Vbulletin论坛

    我想刮一个board http ozbeceriksizler com login php do login我目前是该组织的活跃成员 但要做到这一点 我必须登录 我看过各种帖子 但不明白其背后的逻辑 也没有找到可行的解决方案 这是site
  • 有没有办法确定 stdout 是否指向控制台?

    我想将代码插入到在 Windows 上运行的 C 应用程序中 该应用程序可以确定 stdout 或 cout 是否指向控制台 如果是 则在将字符写出之前将其转换为终端编码 如果不是 例如 如果写入文件或管道 则应保留这些字符 转换部分不是问
  • Pickling boost python 函数

    为了与 joblib Parallel 一起使用 我需要能够 pickle boost python 函数 当我尝试这样做时 我得到了 TypeError can t pickle builtin function or method ob
  • 自定义绘制下拉面板在控制范围之外

    我似乎获得了 不清楚我在问什么 的投票 我想自定义绘制一个组合框样式控件 弹出打开部分需要在控件本身的边界之外绘制 我无法使用组合框 想想类似于 Word 功能区中的库控件的东西 我想到了两种方法 将弹出打开的面板传递回表单以进行渲染 使用
  • 使用引导程序 Typeahead 处理自动完成文本框中的选定事件?

    我想在之后运行 JavaScript 函数用户选择一个值 using 自动完成文本框引导程序 Typeahead 我正在寻找类似的东西selected event typeahead on typeahead selected functi
  • Git 在一行内合并

    Preamble 我正在使用 git 作为我的实验室正在用 LaTeX 编写的论文的版本控制系统 有好几个人在合作 我遇到了 git 对于如何合并的固执 假设两个人对一行进行了单个单词的更改 然后尝试合并它们 虽然 git diff wor
  • 单击按钮时出现空指针异常

    我有 4 个图像作为按钮 当选择正确的按钮时 会出现一个工作正常的箭头按钮 我的问题是 我试图更改每个按钮的背景资源 以在单击此箭头时进行更改 但我在这一行收到空指针异常 happybutton setBackgroundResource
  • 根据不同 R 包中的 GPD 计算回报水平

    我正在对气象数据进行极值分析 准确地说是对可用的毫米 天降水量数据进行极值分析 我使用阈值超额方法通过最大似然法估计广义帕累托分布的参数 目的是计算每日降水量的多个回报水平 即 2 5 10 20 50 100 年事件 虽然 R 代码工作正
  • 如何在jquery回调函数中重定向到新页面

    我正在使用 jquery 和 servlet 开发一个应用程序 我一直在我的 Login jsp 中使用 jquery 主题滚轮作为界面
  • 从中继器中的文本框获取值 asp.net c#

    我已经尝试让它工作几个小时了 但谷歌没有任何东西可以帮助我解决问题 我有一个非常简单的中继器控件
  • 使用 tumblrs 官方 php 客户端获取 oauth 令牌

    这是我第一次使用 api 和 oauth tumblr 有一个PHP客户端 https github com tumblr tumblr php 我已经下载并安装了composer客户端 这是他们设置客户端所必须的代码 client new
  • Git:合并一个分支但没有一些我只需要在本地修改的文件?

    我有这个特殊的场景 这确实很简单 但我 到目前为止 没有在这里看到类似的问题 我正在从远程存储库复制的我自己的分支中工作 并且我已将自己的任务添加到卡皮斯特拉诺 卡菲莱 这些任务只会帮助我将应用程序部署到我自己的私人服务器 因此当需要将我的
  • 向行添加条目以使其统一

    我有一个csv包含日期 repair id 现场维修次数和异地维修次数的文件 以便我的数据如下所示 data repair id num onsite num offsite 2016 02 01 A 3 0 2016 02 01 B 2
  • Owl-Carousel2 - 设置点数据

    我需要在猫头鹰旋转木马中设置自定义点 我在 JS 中有这样的代码 document ready function header slider owlCarousel loop true autoplay true autoplayTimeo
  • Angular 6 后续:选项值中的 [attr.disabled] 禁用所有条目

    主题 Angular 6 反应式表单 下拉菜单 禁用一个选项 即使检查员说disabled false 所有而不是仅一个预期值都被禁用 人们之前非常友善地帮助我解决了我的问题 Angular 6 Reactive Form 选择选项 禁用之
  • Filepicker.io Web - 禁用内联样式

    我在为网络设计 filepicker io 小部件时遇到一些麻烦 特别是filepicker dragdrop 有什么方法可以禁用内联样式并将其替换为类吗 就像是data fp disable styles或者也许在使用时data fp d
  • 如何强制 Swift 可选数组(很好)

    使用斯威夫特 2 1 我正在寻找一种好方法将非可选类型数组分配给可选类型数组 其中类型相同 以下是我尝试过的一些方法 var foos Int let bars Int foos bars Error Cannot assign value