2016-09-07 10 views
3

にC構造体sockaddr_in構造体に変換し、このコードは、私はライン「withUnsafePointer」を修正する必要がありますが、私は方法がわからないスウィフト3でもうスウィフト3 - 私はあなたの助けが必要CFData

//: Let's set up the `sockaddr_in` C structure using the initializer. 
var sin = sockaddr_in(
    sin_len: UInt8(sizeof(sockaddr_in)), 
    sin_family: sa_family_t(AF_INET), 
    sin_port: in_port_t(0), 
    sin_addr: in_addr(s_addr: inet_addr(routerIP)), 
    sin_zero: (0,0,0,0,0,0,0,0) 
) 

//: Now convert the structure into a `CFData` object. 
let data = withUnsafePointer(&sin) { ptr in 
    CFDataCreate(kCFAllocatorDefault, UnsafePointer(ptr), sizeof(sockaddr_in)) 
} 

//: Create the `CFHostRef` with the `CFData` object and store the retained value for later use. 
host = CFHostCreateWithAddress(kCFAllocatorDefault, data).takeRetainedValue() 

をコンパイルしないのですか?

私はこの

let data = withUnsafePointer(to: &sin) { ptr in 
     CFDataCreate(kCFAllocatorDefault, UnsafePointer(ptr), MemoryLayout<sockaddr_in>.size) 
    } 

コンパイラのようなものを試してみましたが、私はwithMemoryReboundを使用する必要がありますが、どのように言うの? おかげ

答えて

1

NSDataは、これであなたを助けるために便利な方法があり、その後、あなたはCFDataにキャストするためにフリーダイヤルブリッジングを利用することができます。今私が得たしかし、コンパイルすることを

let data = NSData(bytes: &sin, length: MemoryLayout<sockaddr_in>.size) as CFData 
+0

おかげジェニー、新しいエラー –

+0

ここに新しいバグを投稿しました。http://stackoverflow.com/questions/39476628/swift-3-cfhostschedulewithrunloop-crash –

関連する問題