_ArrayType 或 _ArrayProtocol 在 Swift 3.1 中不可用吗?

2023-12-06

我正在使用_ArrayType在我的项目中,当我在 swift 2.1 上运行时。我上周升级到 swift 3.0.2 (Xcode 8.2.1),我发现here that _ArrayType更改为_ArrayProtocol而且效果很好。

今天我将 Xcode 升级到 8.3.1,它给了我错误:Use of undeclared type '_ArrayProtocol'。这是我的代码:

extension _ArrayProtocol where Iterator.Element == UInt8 {
    static func stringValue(_ array: [UInt8]) -> String {
        return String(cString: array)
    }
}

现在怎么了?为什么 _ArrayProtocol 在 swift 3.1 中未声明,而它在 swift 3.0.2 中工作。

当我看这里时也in git我看到 _ArrayProtocol 可用。 比我调查的斯威夫特 2.1 文档我可以在协议列表中看到“_ArrayType”,但在 Swift 中3.0/3.1我看不到文档_ArrayProtocol.


以下划线开头的类型名称应始终被视为内部类型名称。 在 Swift 3.1 中,它被标记为internal在源代码中,因此 不公开可见。

Using _ArrayProtocol was a 解决方法在早期的 Swift 版本中, 你无法定义一个Array具有“相同类型”要求的扩展。 从 Swift 3.1 开始,这已经成为可能,如Xcode 8.3 发行说明:

约束扩展允许通用参数和具体类型之间存在相同类型的约束。(SR-1009)

因此不再需要使用内部协议, 你可以简单地定义

extension Array where Element == UInt8 {

}

但请注意,您的static func stringValue()不需要任何 元素类型的限制。您的意图可能是 定义一个实例方法像这样:

extension Array where Element == UInt8 {

    func stringValue() -> String {
        return String(cString: self)
    }

}

print([65, 66, 67, 0].stringValue()) // ABC

另请注意String(cString:)期望一个空终止顺序 UTF-8 字节。

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

_ArrayType 或 _ArrayProtocol 在 Swift 3.1 中不可用吗? 的相关文章

  • 通过 firebase 登录获取更大的 Facebook 图片

    我正在使用 firebase 通过 facebook 登录用户 这一切都工作正常 我可以获取用户 FB 个人资料图像 尽管它太小了 有人可以告诉我如何获得更大的 我正在使用的代码 override func viewDidLoad let
  • Swift 自定义 UITableViewCell 标签始终为零

    我已经被这个问题困扰好几天了 所以如果有人能提供帮助 我会很高兴 我正在尝试创建一个动态 UITableView 为此我创建了一个自定义 UITableView 子类 并且还创建了一个自定义 UITableViewCell 子类 因为我需要
  • 在 Swift 中的类扩展函数中使用“self”

    我希望能够从 Nib 中提取 UIView 子类的实例 我希望能够调用 MyCustomView instantiateFromNib 并拥有 MyCustomView 的实例 我几乎准备好通过桥接标头移植我所拥有的工作 Objective
  • Swift 中的协议与多态性

    我对面向对象编程相当陌生 我正在尝试了解协议 委托和多态性 我最近观看了一个培训视频 其中宣传当您有两个相似且具有相似方法实现的类时 协议是优雅地实现此目的的最佳解决方案 这就说得通了 然而 一些额外的研究让我发现了多态性 听起来这也是一种
  • 从两种不同类型的数组中获取公共数据

    struct Human let name String let id String let travelled String struct Animal let name String let id String let travelle
  • 将数据追加到 UITableView 的正确方法,swift

    我正在尝试使用两种方式将新数据添加到 UITableView 第一种方式 func insertData appendMessages Message var currentCount self messeges count var ind
  • xcode 9 中的 Facebook 登录按钮终止

    我正在使用 Xcode 9 并将编译器设置为 Swift 3 2 我使用 Cocoapods 安装了 Facebook Login 一切都编译没有任何错误 但每当我在模拟器中运行它时 我单击登录按钮 它就会崩溃 控制台中仅打印以下内容 li
  • 删除 UISearchBar 中的清除按钮

    我想从 UISearchBar 中删除清除按钮 灰色 x 我尝试按照中的描述进行操作这个答案 https stackoverflow com a 19458201 但它不起作用 我将 Objective C 代码从下面的答案和评论翻译为以下
  • 如何设置 NSAttributedString 的字体大小

    编辑 这已被标记为重复 但正如我在下面所述 我正在寻找一个 Swift 解决方案 我发现的所有内容都是用 Objective C 编写的 我正在尝试将 HTML 转换为 NSAttributedString 但不知道如何设置字体样式和大小
  • 扩展功能截图未捕获 iPhone 和 iPad 中的同一区域

    我正在使用扩展函数来截取 uiview 的屏幕截图 问题是结果看起来非常不同 我希望无论使用 ipad 还是 iphone 照片看起来都一样 我手动输入约束 因此我希望图像是相同的 我想使用该函数转到视图控制器的原点或中心 高度为 200
  • 使用 NSXMLParser 在 Swift 中解析分层 XML

    我确实在以我实际可以使用的形式获取分层 XML 值时遇到问题 因此我们将不胜感激 我对 Swift 和 IOS 开发还很陌生 所以说实话我并不完全理解解析器 但我希望在这之后我能理解 下面是我尝试解析的示例 XML 它来自肥皂网络服务 连接
  • AVPlayer Swift:如何隐藏控件并禁用横向视图?

    因为这是我的第一篇文章 所以简单介绍一下我 通常我设计东西 主要是 UI 但我真的很想跨入编程领域 以便更好地理解你们 所以我决定构建一个小应用程序来开始 所以我已经花了几个小时试图解决这个问题 这是我的第一个应用程序项目 所以我为我的新手
  • 使用 Swift 导入 aurioTouch 库

    我正在尝试将 Objective C 应用程序转换为 swift 我想导入课程奥里奥触摸 https developer apple com library ios samplecode aurioTouch Introduction In
  • 如何防止在 macOS 中打开同一窗口的多个实例?

    我正在制作一个 Mac 菜单栏应用程序 它有一个Preferences选项 当用户点击它时 会出现一个Preferences将打开窗口 显示应用程序的所有设置 我打开Preferences窗口如 let storyboard NSStory
  • RealityKit – 如何为自然光创建阴影捕捉器?

    我想创建一架飞机 func getShadowPlane width Float height Float gt ModelEntity let sphereResource MeshResource generatePlane width
  • 应用程序图标上的快捷方式项目不适用于 iOS 13

    为了支持应用程序图标上的快捷方式项目 我们在中实现了以下方法SceneDelegate func windowScene windowScene UIWindowScene performActionFor shortcutItem UIA
  • Swift 3 Web 视图

    所以我刚刚更新到新的Xcode8 and Swift3但现在我的网络视图不起作用 这是我使用的代码 UIWebView loadRequest webView NSURLRequest URL NSURL string http hardw
  • 使用 CommonCrypto 的 Swift AES 加密

    我正在开发一个 iOS 应用程序代码7 1 with 斯威夫特2 1我正在尝试进行简单的加密AES 128 位 and PKCS7填充使用通用加密库 该代码有效 但每次我尝试投射NSData反对NSString然后对于 String 我得到
  • 如何查看iOS11屏幕录制是否开启?

    为了检测 iOS11 屏幕录制功能的开或关 我使用了 isCaptured 和 UIScreenCapturedDidChange 通知 当我第一次启动应用程序并在 iOS11 内置屏幕录制功能上时 它会通知选择器方法 值为 True 但是
  • 无效的 Swift 支持 - 文件位置不正确

    我一直在尝试将新版本上传到 iTunes Connect 来更新应用程序 我第一次使用 xCode 6 但收到了一封来自 Apple 的电子邮件 内容如下 亲爱的开发者 我们发现您最近交付的 应用程序 存在一个或多个问题 要处理您的交货 必

随机推荐

  • 从 iCloud 备份中排除文件

    我使用的是 iOS 5 1 我使用这种和平的代码 pathURL setResourceValue NSNumber numberWithBool YES forKey NSURLIsExcludedFromBackupKey error
  • 在 Codeblocks 中设置 GLUT 项目 (Ubuntu 12.04)

    我通过 apt get 安装了 freeglut3 和 freeglut3 dev 我想在 Codeblocks 中创建一个 OPENGL GLUT 项目 有人问我 GLUT 的位置 我输入了 usr 正如我在教程中找到的那样 但我收到错误
  • 使用活动记录进行计数/分组?

    我有一张包含以下信息的表 id user id points 1 12 48 2 15 36 3 18 22 4 12 28 5 15 59 6 12 31 etc 我想要的是每个 user id 包含最多条目的前 10 个 数组 顺序从高
  • 列表视图选择如何改变事件的工作方式。它叫了两次

    我有列表视图控件 在更改选择时 我会检查 如果所选记录计数大于零 则仅启用组框控件 否则将其禁用 因为 这些控件仅与选定的记录相关 如果没有选择记录 则不应启用它 以下是我的列表视图的选定更改事件 Private Sub lv Select
  • Play 2.5 对某些请求禁用csrf保护

    我正在使用 play Framework v 2 5 3 编写我的应用程序 并使用官方文档中所述的 CSRF 保护 public class Filters implements HttpFilters Inject CSRFFilter
  • 是否可以在循环中创建并行的 Jenkins 声明式管道阶段?

    我的项目中的不同子项目有一个长期运行的 Gradle 任务列表 我想使用 Jenkins 声明式管道并行运行它们 我希望这样的事情可能会起作用 projects a b c pipeline stage Deploy parallel fo
  • GMailApp Gmail 搜索

    我有一个问题GmailApp搜索 查询 功能 根据它使用的手册Gmail 查询 因此所有参数都应该可访问并返回正确的结果 这是我的查询 var sent threads GmailApp search in sent after 2016
  • SVG animateTransform 同时旋转和缩放同一对象?

    我想同时对缩放和旋转对象进行动画处理 到目前为止 我的尝试失败了 我只能链接动画 旋转 然后缩放 但不能一起旋转和缩放 我错过了什么 我尝试删除 additive sum 但这只是覆盖并忽略了缩放动画
  • 闭包在幕后是如何工作的? (C#)

    我觉得我对闭包 如何使用它们以及它们何时有用有相当不错的理解 但我不明白的是它们实际上是如何在内存中幕后工作的 一些示例代码 public Action Counter int count 0 Action counter gt count
  • 在 mysql where in 子句中对数组使用 implode

    我试图在 mysql where in 子句中使用数组 result myDB gt query SELECT sum total as total FROM myDB gt prefix mydata WHERE categoryname
  • GWT (Google Web Toolkit) 中的 Fire ResizeEvent

    在我的网站上 我有许多 Google 地图 v3 您可以通过 TabPanel 选择它们 每个选项卡一个 但切换选项卡时会出现问题 当您选择该选项卡时 它不会 唤醒 地图 要解决这个问题 我只需要使用 ResizeEvent fire so
  • 从命令行java读取标准输入和参数[关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 运行 java 文件时 我在从命令行读取参数和标准输入时遇到问题 我可以单独读取参数 也可以单独读取标准输入 但不能一起读取 例如 java myFile 6 2 lt numbers
  • CSS 网格布局中的等高行

    我认为使用 Flexbox 不可能实现这一点 因为每一行只能是适合其元素所需的最小高度 但是使用较新的 CSS 网格可以实现这一点吗 需要明确的是 我希望网格中所有行中的所有元素的高度相等 而不仅仅是每行 基本上 最高的 单元格 应该决定所
  • 如何解决ActivityThread.performLaunchActivity中的java.lang.ClassNotFoundException?

    对于我的 Android 应用程序 我在 Google Play 开发者控制台中收到以下错误 java lang RuntimeException Unable to instantiate activity ComponentInfo P
  • Ms Access 发送带有报告附件的电子邮件

    使用 MS Access 中的 VBA 代码生成器 我能够编写打开 Outlook 的代码 并通过单击按钮向我发送电子邮件 我在添加附件时遇到问题 我发现的大多数代码都会将 MS 数据库外部的文件添加为附件 我想添加在我的数据库中创建的报告
  • 按左右箭头改变图像?

    所以我有这个简单的幻灯片 div class container div img alt slideshow src 1 jpg div div 当我像这样单击时 我已经设法使图像发生变化
  • java 的 MP3/声音库有什么好的推荐吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我正在寻找图书馆来 读取和
  • 找不到适合指定区域性的任何资源(资源文件中的 C# WinForm 图像)

    我将三个图像添加到名为 Resource1 resx 的文件中 我还添加了一根字符串只是为了测试目的 我在 GetString 或 GetObject image name 上收到此错误 找不到任何资源 适合特定文化 或中立文化 确保 Re
  • 使用 传递参数

    我使用 forEach 将参数传递给函数 代码如下
  • _ArrayType 或 _ArrayProtocol 在 Swift 3.1 中不可用吗?

    我正在使用 ArrayType在我的项目中 当我在 swift 2 1 上运行时 我上周升级到 swift 3 0 2 Xcode 8 2 1 我发现here that ArrayType更改为 ArrayProtocol而且效果很好 今天