【发布时间】:2016-06-23 17:39:46
【问题描述】:
我有一个带有此功能的旧代码库:
-(void)foo: (int *)buffer {
myArray[0] = buffer[0];
myArray[1] = buffer[1];
myArray[2] = buffer[2];
myArray[3] = buffer[3];
}
在 Swift 中,这个方法是这样写的:
func foo(buffer: UnsafeMutablePointer<Int32>) {
}
int 指针现在被视为UnsafeMutablePointer<UInt32>。我无法在 Swift 中访问 buffer 的下标;即我不能像这样打电话给buffer[0]:
func foo(buffer: UnsafeMutablePointer<Int32>) {
myArray[0] = buffer[0] // won't compile, buffer treated as Int32
}
出于绝望,即使知道UnsafeMutablePointer<Int32> 在Swift 中最终被解析为Int32 类型,我也尝试了以下方法:
guard let buffer = buffer.memory as? [Int] else { fatalError() }
guard let buffer = buffer as? [Int] else { fatalError() }
guard let buffer = buffer.memory as? [Int32] else { fatalError() }
guard let buffer = buffer as? [Int32] else { fatalError() }
有人能给我指出正确的方向,让我了解如何像 Objective-C 代码那样访问下标成员吗?
【问题讨论】:
标签: swift