Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 不同的有效代码示例抛出相同的错误_Ios_Swift_Xcode_Ssl - Fatal编程技术网

Ios 不同的有效代码示例抛出相同的错误

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

我正在尝试使用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 =
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,堆栈溢出已经充满了有用的信息。