当前位置: 首页 > 面试题库 >

如何在Swift 3中使用UnsafeMutablePointer?

柴寂离
2023-03-14
问题内容

我有以下用Swift 2.2编写的代码:

let keyData = NSMutableData(length: 64)!
SecRandomCopyBytes(kSecRandomDefault, 64, UnsafeMutablePointer<UInt8>(keyData.mutableBytes))

XCode 8突出显示第二行,并声称

无法使用类型为((UnsafeMutableRawPointer)’的参数列表来调用类型’UnsafeMutablePointer <_>’的初始化程序

虽然我很欣赏XCode告诉我的内容,但我不太了解如何将UnsafeMutableRawPointer更改为可接受的。

有谁知道如何将此代码转换为Swift 3?


问题答案:

我建议您使用Data而不是NSDataSwift 3。

var keyData = Data(count: 64)
let result = keyData.withUnsafeMutableBytes {mutableBytes in
    SecRandomCopyBytes(kSecRandomDefault, keyData.count, mutableBytes)
}

withUnsafeMutableBytes(_:) 声明为通用方法,因此在诸如此类的简单情况下,无需指定元素类型就可以使用它。



 类似资料:
  • 问题内容: 已在Swift3中弃用。任何人都可以提供一些示例来说明尝试打开URL时替换的工作方式吗? 问题答案: 所有你需要的是:

  • 我正在尝试在我的项目中集成swift软件包管理器,但没有成功。iOS模拟器在启动时崩溃。 下面是我为了集成包管理器而遵循的步骤: 打开xcode并创建新的XcodeProject: 我从终端运行了以下命令: 创建package.swift文件 -一切似乎正常 null 你能帮我解决这个问题吗?

  • 在Swift 2中,我能够使用延迟使用中央调度的操作: 但自Swift3以来,这似乎不再编译了。用现代Swift写这篇文章的首选方式是什么?

  • 问题内容: 我试图将一个添加到UIButton,以便在点击时将触发一个功能。我正在使用,并出现一些错误: 由于未捕获的异常’NSInvalidArgumentException’而终止应用程序,原因:’-[[SwiftRunner.ViewController tapBlurButton]:无法识别的选择器已发送到实例0x149e07610’ 这大致就是我所拥有的: 问题答案: 从您的代码中,您正

  • 问题内容: 我正在尝试遵循Apple的“ 开始开发iOS应用程序(Swift)”教程,并且几乎完成了该教程。当我使用Xcode 8(我认为使用Swift 3而不是Swift 2)时,不得不修改本教程的几个部分。但是,我遇到了以下编译器错误,我不知道为什么: 在以下功能中: 我猜想有一个不同的NSIndexPath初始化程序在Swift 3中已更改,但我找不到它。难道我做错了什么? 谢谢, 问题答案

  • 我的项目运行得很好,但当我添加alamofire时,它就不起作用了。 它给出以下错误 ld:警告:未找到选项“-F/Users/banglafire/Desktop/mysios/Build/Products/Debug iphonesimulator/Alamofire”的目录ld:未找到框架Alamofire clang:错误:链接器命令失败,退出代码为1(使用-v查看调用) 附加信息 Coc

  • 我试图获取一个JSON响应,并将结果存储在一个变量中。我在以前的Swift版本中使用过这个代码版本,直到Xcode8的GM版本发布。我在StackOverflow上看了几篇类似的文章:Swift 2 Parsing JSON-Cant下标类型为“anyObject”的值和Swift 3中的JSON Parsing。 然而,这里所传达的思想似乎不适用于这种情况。 如何正确解析Swift3中的JSON