Obj-c에 익숙하고 Swift에 익숙해졌지만 Swift의 매우 엄격한 타입 검사와 관련하여 끔찍한 시간을 보냈습니다. 스위프트이에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)));
}
}
: 적절한 예는, 내가하고 싶었던 모든 아래의 Obj-C의 루틴을 변환했다
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'가 선언 되었습니까? –