- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我已经尝试了很多方法来解决这个问题,但就是想不出任何可行的方法。谁能告诉我以下 Swift 代码有什么问题:
let incomingRequest: CFHTTPMessageRef? = CFDictionaryGetValue(self.incomingRequests as CFMutableDictionaryRef, unsafeAddressOf(incomingFileHandle!)) as CFHTTPMessageRef
上面的代码给出了错误信息:'UnsafePointer<Void>' is not convertible to 'CFHTTPMessageRef'
我想我不明白的是如何将 Core Foundation 函数返回的“UnsafePointer”转换为它应该是的指针类型(即本例中的 CFHTTPMessageRef)。我如何找到有关如何执行此操作的文档。我已经阅读了我能找到的所有内容,但到目前为止还没有任何内容解释如何将返回值重铸为它们最初应该具有的值。这必须在某处记录,不是吗?
这是我遇到问题的代码:
let incomingRequest = CFDictionaryGetValue(self.incomingRequests as CFMutableDictionaryRef, unsafeAddressOf(incomingFileHandle!))
unsafeBitCast(incomingRequest, CFHTTPMessageRef.self)
if (incomingRequest != nil) {
let success: Boolean = CFHTTPMessageAppendBytes(incomingRequest as CFHTTPMessageRef, unsafeAddressOf(data!.bytes) as UnsafePointer<UInt8>, data!.length)
if success { // Do something... }
CFHTTPMessageAppendBytes 调用仍然给出“Type 'UnsafePointer' does not conform to protocol 'AnyObject'”。下面的“如果”检查“成功”会提示“类型‘ bool ’不符合协议(protocol)‘ bool 类型’”。那到底是怎么回事? Boolean 不是 bool 类型?
我发现 Swift 的严格类型检查非常令人沮丧。到目前为止,它比 Obj-C、C 或我使用过的任何其他语言都难编写代码。我敢肯定这是因为我不明白,或者没有找到正确的文档,但这真的让我发疯。
最佳答案
使用不安全的BitCast。如下例:
import Foundation
var x = "1"
var dict : NSMutableDictionary = [x: "2"]
var y = CFDictionaryGetValue(dict as CFMutableDictionaryRef, unsafeAddressOf(x))
let str: NSString = unsafeBitCast(y, NSString.self)
str == "2"
仅供引用:有一个 quora 与 unsafeBitCast 相关。 http://www.quora.com/Why-does-Swift-not-allow-implicit-type-conversion
关于swift - 将 'UnsafePointer<Void>' 重铸为 'CFHTTPMessageRef',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26727264/
我知道可以将数据流式传输到作为请求对象的 CFHTTPMessageRef,这可以通过使用方法 CFReadStreamCreateForHTTPRequest 来实现。 是否可以对作为响应对象的 C
我正在使用 CFHTTPMessage 的包装类,其中包含一个 CFHTTPMessageRef 对象,其中添加了方法 (GET)、Web 应用程序服务器的 URL、以及一些包含日期和身份验证随机数的
我已经尝试了很多方法来解决这个问题,但就是想不出任何可行的方法。谁能告诉我以下 Swift 代码有什么问题: let incomingRequest: CFHTTPMessageRef? = CFDi
我是一名优秀的程序员,十分优秀!