- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
正在将我现有的 swift 源代码库转换为 swift 3,并且在 swift 类中有一个方法,该方法早些时候返回 NSStringEncoding。在 swift 3 中,编译器要求我将 NSStringEncoding 转换为 String.Encoding。但是这个方法现在没有反射(reflect)在 objective-c 生成的接口(interface)中,现在我无法在我的 objective-c 类中调用这个方法。
这是一个示例代码片段:
@objc
open class MyClass: NSObject{
open var textEncoding: String.Encoding { get { return self.getEncoding() } }
fileprivate func getEncoding() -> String.Encoding{
// some conversion code
return encoding
}
}
在 objective-c 类中,
-(void)demoFunc:(MyClass * _Nonnull)response{
(i) NSStringEncoding responseEncoding = response.textEncoding;
}
编译器为上面的行抛出这个错误,
Property 'textEncoding' not found on object of type 'MyClass *'
我无法在 swift 文件中声明/使用 NSStringEncoding 并且在 Objective C 中无法使用 String.Encoding,因此我该如何解决这个问题?
最佳答案
基础定义
typedef NSUInteger NSStringEncoding;
NS_ENUM(NSStringEncoding) {
NSASCIIStringEncoding = 1, /* 0..127 only */
// ...
};
映射到 Swift 为
extension String {
public struct Encoding : RawRepresentable {
public var rawValue: UInt
// ...
}
}
所以你可以做的是将原始值传递回 Objective-C:
open var textEncoding: UInt { return self.getEncoding().rawValue }
关于ios - String.Encoding 未在 swift 3 中转换为 NSStringEncoding 到 objective-c 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40486355/
我在 Xcode 8 中运行时收到此消息。 检测到不正确的 NSStringEncoding 值 0x8000100。假设 NSASCIIStringEncoding。将在不久的将来停止这种兼容性映射
给定一个字符集字符串,例如“utf-8”、“iso-8859-1”、“us-ascii”等,是否有任何内置方法可以在 Cocoa 中获取适当的 NSStringEncoding? 现在我正在考虑构建一
我在 iphone 中使用 ASIHttpRequest 库,当我尝试在以下 URL 上执行 GET 请求时,我收到此消息,但请求失败,如果有人遇到此问题或知道可能的解决方案,请告知让我知道。其次,如
Incorrect NSStringEncoding value 0x0000 detected. Assuming NSStringEncodingASCII. Will stop this com
我目前编写了一些代码来使用 NSStringEncoding 解码字符串。 我想使用 NSStringEncoding 的所有值来解码该字符串。 但我不知道如何获取 NSStringEncoding
我只是想知道是否有任何现有类别或任何类型的函数会从 NSURLResponse 对象中返回 NSStringEncoding 常量。 我目前面临的问题是,当我将 Web 服务响应数据转换为 Strin
我在我的应用程序中使用 ASIHTTPRequst,但遇到了一些问题,但仅限于某些设备。在某些情况下,我会收到以下错误: " 检测到不正确的 NSStringEncoding 值 0x0000。假设
当我尝试在 Swift 中将 NSData 转换为 NSString 时出现错误 这是我的要求: var request = NSURLRequest(URL: url!, cachePolicy:
我在使用这段代码时遇到了这个错误: NSMutableURLRequest *request = [ [[NSMutableURLRequest alloc] initWithURL:[NSU
正在将我现有的 swift 源代码库转换为 swift 3,并且在 swift 类中有一个方法,该方法早些时候返回 NSStringEncoding。在 swift 3 中,编译器要求我将 NSStr
我是一名优秀的程序员,十分优秀!