相关疑难解决方法(0)

往返数据的往返Swift数字类型

由于Swift 3倾向于Data而不是[UInt8],我试图找出最有效/惯用的编码/解码方式将各种数字类型(UInt8,Double,Float,Int64等)作为数据对象.

对于使用[UInt8]这个答案,但它似乎使用了我在Data上找不到的各种指针API.

我想基本上一些自定义扩展看起来像:

let input = 42.13 // implicit Double
let bytes = input.data
let roundtrip = bytes.to(Double) // --> 42.13
Run Code Online (Sandbox Code Playgroud)

真正逃避我的部分,我已经查看了一堆文档,我是如何从任何基本结构(所有数字都是)得到某种指针的东西(OpaquePointer或BufferPointer或UnsafePointer?).在C中,我只是在它前面拍一个&符号,然后就去了.

swift swift3 swift-data

84
推荐指数
1
解决办法
4万
查看次数

将C char数组转换为String

我有一个与C库互操作的Swift程序.这个C库返回一个char[]内部有数组的结构,如下所示:

struct record
{
    char name[8];
};
Run Code Online (Sandbox Code Playgroud)

该定义被正确导入Swift.但是,该字段被解释为8个元素(类型)的元组,我不知道如何使用Swift 转换为a .Int8(Int8, Int8, Int8, Int8, Int8, Int8, Int8, Int8)String

没有String接受Int8元组的初始化器,并且似乎不可能获得指向元组的第一个元素的指针(因为类型可以是异构的,这并不奇怪).

现在,我最好的想法是创建一个微小的C函数,它接受一个指向结构本身的指针,并name作为char*指针而不是数组返回,并继续使用它.

然而,是否有纯粹的Swift方式呢?

arrays interop tuples swift

22
推荐指数
1
解决办法
1万
查看次数

'UnsafePointer<Int>' 的初始化导致悬空指针

所以我有一些代码来创建 H264ParameterSets,如:

var formatDesc: CMVideoFormatDescription?

func createH264FormatDescription(SPS: Array<UInt8>, PPS: Array<UInt8>) -> OSStatus {
    if formatDesc != nil { formatDesc = nil }

    let paramSet = [UnsafePointer<UInt8>(SPS), UnsafePointer<UInt8>(PPS)]
    let paramPointers = UnsafePointer<UnsafePointer<UInt8>>(paramSet)
    let paramSizes = UnsafePointer<Int>([SPS.count, PPS.count])

    let status = CMVideoFormatDescriptionCreateFromH264ParameterSets(allocator: kCFAllocatorDefault, parameterSetCount: 2, parameterSetPointers: paramPointers, parameterSetSizes: paramSizes, nalUnitHeaderLength: 4, formatDescriptionOut: &formatDesc)

    return status
}
Run Code Online (Sandbox Code Playgroud)

从 Xcode 11.4 开始,我收到了那些 UnsafePointer() 的警告,这在以前似乎没有发生过:

Initialization of UnsafePointer<UInt8> results in a dangling pointer

Initialization of UnsafePointer<UnsafePointer<UInt8>> results in a dangling pointer

Initialization of UnsafePointer<Int> results …
Run Code Online (Sandbox Code Playgroud)

ios swift

5
推荐指数
1
解决办法
4692
查看次数

通过 Buffer Post Xcode 11.5 更新的数据

我拥有的:

引用Apple 的 Chroma Key Code,它指出我们可以通过创建一个 Chroma Key Filter Cube

func chromaKeyFilter(fromHue: CGFloat, toHue: CGFloat) -> CIFilter?
{
    // 1
    let size = 64
    var cubeRGB = [Float]()
        
    // 2
    for z in 0 ..< size {
        let blue = CGFloat(z) / CGFloat(size-1)
        for y in 0 ..< size {
            let green = CGFloat(y) / CGFloat(size-1)
            for x in 0 ..< size {
                let red = CGFloat(x) / CGFloat(size-1)
                    
                // 3
                let hue = getHue(red: red, green: green, …
Run Code Online (Sandbox Code Playgroud)

unsafe-pointers chromakey swift

2
推荐指数
1
解决办法
158
查看次数

标签 统计

swift ×4

arrays ×1

chromakey ×1

interop ×1

ios ×1

swift-data ×1

swift3 ×1

tuples ×1

unsafe-pointers ×1