Ios 不同的有效代码示例抛出相同的错误
我正在尝试使用TCP SSL连接Ios 不同的有效代码示例抛出相同的错误,ios,swift,xcode,ssl,Ios,Swift,Xcode,Ssl,我正在尝试使用TCP SSL连接openssl s_服务器和iOS客户端(我也知道,可能这是相关的)。现在我试着用这个: let mainbun = NSBundle.mainBundle().pathForResource("pd-test", ofType: "cer") var key: NSData = NSData.dataWithContentsOfMappedFile(mainbun!)! as NSData var cert:SecCertificateRef = SecCert
openssl s_服务器
和iOS客户端(我也知道,可能这是相关的)。现在我试着用这个:
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'
为什么我不能构建有效的代码(我看到很多这样的示例,它们都抛出几乎相同的错误,例如)?我怎样才能修好它
为什么我不能生成有效的代码
这是因为敏捷的语言在不断进化;您使用的Swift版本比编写这些示例时使用的版本更新。它在当时是有效的Swift,但在您的Swift版本中无效
(如果要下载Xcode 8 seed 6,第一行甚至不会编译;现在没有
NSBundle
,没有mainBundle()
,也没有pathForResource
。这表明Swift语言可以有多么彻底的变化。)我如何降级我在Xcode中使用的Swift版本?或者自动解决这个问题?因为我已经手动修改了这段代码,但现在它不起作用了(或者我已经修改了,但一些用户写道这是正确的方式)“我如何降级我在Xcode中使用的Swift版本”您需要知道编写代码的Swift版本,并使用包含该版本的Xcode版本。所有旧版本的Xcode都可以从苹果获得。“或者自动地解决这个问题”您可能无法完全自动地解决它,但是如果您了解Swift,您得到的编译器错误是非常清楚的,并且很容易修复。至于使用OpenSSL,堆栈溢出已经充满了有用的信息。