我来自Swift到Objective-C,我碰到的一个问题是NSData似乎没有方法来枚举Swift数据的UInt8值。其他答案也有类似的标题,但它们都涉及属性列表,而我只有一桶ASCII字节。具体而言,我想在OBJ - C的复制的代码是:NSData的NSArray的NSData?
//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转换为NSNumbers我可以从提取intValues的阵列。当然,如果有更好的方法,请告诉我。目标是尽可能保持Obj-C代码与Swift类似,因为我将同时维护两个代码库。
为什么要维护Swift和Objective-C?将Objective-C置于维护模式并跨越新的Swift代码来覆盖您替换的内容。维护两个不合理的代码库就是重复工作和错误的根源。 – ColGraff
我最初在Swift中编写了该应用程序,但事实证明,它在App Store二进制托管限制上是4 MB。应用程序中的所有资源都是ASCII文本,我真的无法删除,所以Swift运行时是唯一可以削减的。所以我重写Obj-C中的应用程序。当Swift ABI稳定时,我将交换代码库。是的,我知道这种情况的荒谬。 – PopKernel
@PopKernel可以在用户安装应用程序时远程下载一些额外资源,以避免重新编码所有内容。 :) – 2017-08-29 03:09:04