我从 Swift 转到 Objective-C,我遇到的一个问题是 NSData 似乎没有像 Swift 的 Data 那样枚举 UInt8 值的方法。存在具有类似标题的其他答案,但它们都处理属性列表,而我只有一桶 ASCII 字节。具体来说,我想在 Obj-C 中复制的代码是:
//Find the next newline in ASCII data given a byte offset
let subset = myData.advanced(by: offset)
var lineEnd: Data.Index = myData.endIndex
subset.enumerateBytes({ (memory, idx, stop) in
let newline: UInt8 = 10
for idx in memory.indices {
let charByte = memory[idx]
if charByte == newline {
lineEnd = idx
stop = true; return;
}
}
})
理想情况下,我想要一种将 NSArray 转换为 NSNumber 数组的方法,我可以从中提取 intValues。当然,如果有更好的方法,请告诉我。目标是使 Obj-C 代码尽可能类似于 Swift,因为我将同时维护这两个代码库。
最佳答案
访问 NSData
字节的唯一好方法是调用它的 -bytes
方法,它会为您提供指向其内部存储的 C 指针。
NSData *data = ...;
const uint8_t *bytes = data.bytes;
NSUInteger length = data.length;
for (NSUInteger i = 0; i < length; i++) {
uint8_t byte = bytes[i];
// do something with byte
}
关于ios - NSData 到 NSNumbers 的 NSArray?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45929969/