我來自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