Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Swift转换为Objective-C编译器警告说明?_Objective C_Swift_Encoding_Cfstring - Fatal编程技术网

将Swift转换为Objective-C编译器警告说明?

将Swift转换为Objective-C编译器警告说明?,objective-c,swift,encoding,cfstring,Objective C,Swift,Encoding,Cfstring,我想围绕NSURLSession创建一个包装器,我发现了一些不错的代码,但是是用Swift编写的。由于我仍然使用Objective-C编写生产代码,我开始借用上述代码的思想,尽管我很难理解以下代码并将其翻译成Objective-C(如果需要)。 我知道我可以使用AFNetworking,但这是不可行的,因为在构建一个可分发的框架时,架构决定了这一点 守则: /// encoding for the request. public var stringEncoding: UInt

我想围绕NSURLSession创建一个包装器,我发现了一些不错的代码,但是是用Swift编写的。由于我仍然使用Objective-C编写生产代码,我开始借用上述代码的思想,尽管我很难理解以下代码并将其翻译成Objective-C(如果需要)。 我知道我可以使用AFNetworking,但这是不可行的,因为在构建一个可分发的框架时,架构决定了这一点

守则:

    /// encoding for the request.
    public var stringEncoding: UInt = NSUTF8StringEncoding

// Somewhere in a method

    var charset = CFStringConvertEncodingToIANACharSetName(CFStringConvertNSStringEncodingToEncoding(self.stringEncoding));
if request.valueForHTTPHeaderField(contentTypeKey) == nil {
                    request.setValue("application/x-www-form-urlencoded; charset=\(charset)",
                        forHTTPHeaderField:contentTypeKey)
                }
                request.HTTPBody = queryString.dataUsingEncoding(self.stringEncoding)
我的目标C代码:

@property (assign, nonatomic) NSUInteger stringEncoding;

    // In this line I get a compiler warning and in runtime it crashes with BAD_EXC
        CFStringEncoding cfStringEncoding = CFStringConvertIANACharSetNameToEncoding(CFStringConvertNSStringEncodingToEncoding(self.stringEncoding));
                if (![mutableRequest valueForHTTPHeaderField:ContentTypeKey])
                    {
                    [mutableRequest setValue:[NSString stringWithFormat:@"application/x-www-form-urlencoded; charset=%u", (unsigned int)cfStringEncoding] forHTTPHeaderField:ContentTypeKey];
                    }
                mutableRequest.HTTPBody = [queryString dataUsingEncoding:self.stringEncoding];
编译器警告:

Incompatible integer to pointer conversion assigning to 'CFStringEncoding' (aka 'unsigned long') from 'CFStringRef' (aka 'const struct __CFString *')
我没有使用CFStringEncoding和CFString的丰富经验,因此我发现很难翻译文档


我真的需要这种转换吗?它的用途是什么?

尝试使用
NSString

NSString *charset =
        (NSString *)CFStringConvertEncodingToIANACharSetName
        (CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding));

这是在
Swift
版本之前通常使用的方法,我记得
AFNetworking
使用了类似的方法(如果不是相同的话)。

您的ObjC代码似乎使用了错误的函数(CFStringConvertIANACharSetNameToEncoding而不是cfStringConvertEncodingToAnaCharsetName)。而且你不能用
%u
打印字符串……他们打字错误,我看不见!!我最后使用了下面的答案。