我熟悉Obj-c並熟悉Swift,但是我在使用Swift的非常嚴格的類型檢查時遇到了可怕的時間。典型的例子,所有我想做的事是在下面的OBJ-C轉換的程序:從Swift調用Core-Foundation方法
- (void)receiveIncomingConnectionNotification:(NSNotification *)notification {
NSDictionary *userInfo = [notification userInfo];
NSFileHandle *incomingFileHandle = [userInfo objectForKey:NSFileHandleNotificationFileHandleItem];
if (incomingFileHandle) {
CFDictionaryAddValue(
incomingRequests,
(__bridge const void *)(incomingFileHandle),
(__bridge const void *)((__bridge id)CFHTTPMessageCreateEmpty(kCFAllocatorDefault, TRUE)));
}
}
對此斯威夫特:
func receiveIncomingConnectionNotification(notification: NSNotification) {
let userInfo: NSDictionary = notification.userInfo!
let incomingFileHandle: NSFileHandle? = userInfo.objectForKey(NSFileHandleNotificationFileHandleItem) as? NSFileHandle
if (incomingFileHandle != nil) {
CFDictionaryAddValue(self.incomingRequests as CFMutableDictionaryRef, incomingFileHandle, CFHTTPMessageCreateEmpty(kCFAllocatorDefault, true))
}
}
但CFDictionaryAddValue呼叫保持指向「真正產生錯誤「參數,上面寫着」Cannot convert the expression's type '(CFMutableDictionaryRef, NSFileHandle?, Unmanaged<CFHTTPMessage>!' to type BooleanLiteralConvertible!
。
任何人都知道正確的方法來做到這一點,或者說一個BooleanLiteralConvertible是什麼?
'incomingRequests'是如何聲明的? – 2014-11-03 19:14:21