gpt4 book ai didi

ios - 在 NSData 上使用 .forEach

转载 作者:行者123 更新时间:2023-11-28 05:37:35 25 4
gpt4 key购买 nike

谁能告诉我为什么下面的前两个循环在 iOS11 上不起作用,但在 iOS13 上起作用,而最后两个循环在 iOS11 和 iOS13 上起作用?

似乎 iOS13 允许 NSData 自动用作数据,但 iOS11 不行吗?这不是应该在某处明确记录的东西吗?

extension NSData {

@objc func test() {
print("Data is \(self)")

// works with iOS13, but not iOS11
self.forEach {
print("byte is \($0)")

}
// works with iOS13, but not iOS11
for byte in self {
print("byte is \(byte)")
}

// works with iOS13, and iOS11
(self as Data).forEach {
print("byte is \($0)")
}

// works with iOS13, and iOS11
for byte in self as Data {
print("byte is \(byte)")
}
}
}

最佳答案

Apple 的 SDK 可能包含 Swift 的现有 Objective-C 类型的一些扩展,这些扩展可能因 SDK 版本而异。

自 iOS SDK 13(或可能是 12.x)以来,NSData 具有此扩展名:

extension NSData : DataProtocol {

//...
}

DataProtocol 继承 Collection,其中 Element == UInt8,所以现在,对于 iOS SDK 13,NSData 可以工作作为 UInt8Collection(或 Sequence)。


但是,由于 NSData 是不可变类型,因此在大多数情况下使用引用类型没有意义。最好始终尽可能使用 Data

关于ios - 在 NSData 上使用 .forEach,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58125017/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com