我试图从字节数组中创建一个NSDatavar.

在Obj-C中,我可能会这样做:

NSData *endMarker = [[NSData alloc] initWithBytes:{ 0xFF, 0xD9 }, length: 2]

我想不出在Swift中有什么等效的工作.

推荐答案

NSData有一个初始值设定项,它接受bytes指针:init(bytes: UnsafeMutablePointer <Void>, length: Int).UnsafePointer参数可以接受多种不同的内容,包括一个简单的Swift数组,因此可以使用与Objective-C中几乎相同的语法.当传递数组时,需要确保将其标识为UInt8数组,否则Swift的类型推断将假定您要创建Intarray.

var endMarker = NSData(bytes: [0xFF, 0xD9] as [UInt8], length: 2)

你可以在Apple的Interacting with C APIs文档中阅读更多关于不安全指针参数的信息.

Swift相关问答推荐

Swift:iVar + Equatable上的协议约束

如何设置两个不同的视图模型以在我的SwiftUI应用程序中使用相同的数据源?

如何在AudioKit中实现自定义音效 node ?

在SwiftUI中判断选项时避免重复查看

如何让ScrollView缩小到合适的大小,并在没有黑客攻击的情况下占用最小空间

SWIFT:使字典数组值可变

如何将函数参数(字符串文字)标记为可本地化?

解码器是否需要具有密钥的外部数据表示?

使用`JSONSerialiser`时,省略通用可选项

可以使 Swift init 仅可用于 Objective C 吗?

使第二个视图变灰 SwiftUI

将基于MyProtocol的泛型函数的参数更改为使用存在的any MyProtocol或some MyProtocol是否会受到惩罚?

在 Select 器上显示alert Select SwiftUI

如何防止 UITableViewCell 移动(Swift 5)

iOS Swift - 如何更改表格视图的背景 colored颜色 ?

在 Xcode 中自动实现 Swift 协议方法

自动布局:获取 UIImageView 高度以正确计算单元格高度

如何停止 NSTimer.scheduledTimerWithTimeInterval

Swift 中的单元测试致命错误

如何添加 Alamofire URL 参数