我尝试使用TCP SSL连接openssl s_server
和iOS客户端(另外,我得到another issue with this,也许这与此相关)。现在我尝试使用此sample code from github:
let mainbun = NSBundle.mainBundle().pathForResource("pd-test", ofType: "cer")
var key: NSData = NSData.dataWithContentsOfMappedFile(mainbun!)! as NSData
var cert:SecCertificateRef =
SecCertificateCreateWithData(kCFAllocatorDefault, key).takeRetainedValue()
var err:OSStatus = noErr
let secDict = NSDictionary(
objects: [kSecClassCertificate,cert],
forKeys: [kSecClass, kSecValueRef]
)
SecItemAdd(secDict as CFDictionaryRef, nil);
但是得到错误:
ViewController.swift:67:74: 'AnyObject' is not convertible to 'NSData'; did you mean to use 'as!' to force downcast?
ViewController.swift:69:9: Value of type 'SecCertificate?' has no member 'takeRetainedValue'
ViewController.swift:75:23: Value of type 'CFString' does not conform to expected element type 'NSCopying'
为什么我无法构建有效的代码(我看到很多像这样的样本,它们几乎都会抛出相同的错误,例如this)?我该如何解决?
答案 0 :(得分:0)
为什么我无法构建有效的代码
这是因为Swift语言在不断发展;您使用的是Swift的新版本,而不是编写时使用的示例。它当时是有效的Swift,但它对你的版本的Swift无效。
(如果您要下载Xcode 8种子6,第一行甚至不会编译;现在没有NSBundle
这样的东西,没有mainBundle()
这样的东西{1}},而不是pathForResource
。这表明Swift语言可以根本改变。)