小编ork*_*den的帖子

Swift等同于`[NSDictionary initWithObjects:forKeys:]`

Swift的原生代码Dictionary是否相同[NSDictionary initWithObjects: forKeys:]

假设我有两个带键和值的数组,并希望将它们放在字典中.在Objective-C中我会这样做:

NSArray *keys = @[@"one", @"two", @"three"];
NSArray *values = @[@1, @2, @3];
NSDictionary *dict = [[NSDictionary alloc] initWithObjects: values forKeys: keys];
Run Code Online (Sandbox Code Playgroud)

当然我可以通过两个数组迭代一个计数器,var dict: [String:Int]一步一步地使用和添加东西.但这似乎不是一个好的解决方案.使用zipenumerate可能是同时迭代这两者的更好方法.然而,这种方法意味着拥有一个可变的字典,而不是一个不可变的字典.

let keys = ["one", "two", "three"]
let values = [1, 2, 3]
// ???
let dict: [String:Int] = ["one":1, "two":2, "three":3] // expected result
Run Code Online (Sandbox Code Playgroud)

dictionary objective-c nsdictionary ios swift

8
推荐指数
2
解决办法
6381
查看次数

iOS:使用证书和签名验证文件 - 公钥错误,验证失败

我有三件事:文件,签名文件和X509证书文件.cer.必须使用证书中的公钥和签名文件验证该文件.我想用Security.h/CommonCrypto来做.

到目前为止我尝试了什么:

// load all the files
NSData* fileData = [NSData dataWithContentsOfFile:(...)];
NSData* signatureData = [NSData dataWithContentsOfFile:(...)];
NSData* certificateData = [NSData dataWithContentsOfFile:(...)];  

SecCertificateRef certificate = SecCertificateCreateWithData(NULL, CFBridgingRetain(certificateData)); // load the certificate
Run Code Online (Sandbox Code Playgroud)

证书加载就好了.它的名字可以使用

CFStringRef certificateDescription = SecCertificateCopySubjectSummary(certificate);
Run Code Online (Sandbox Code Playgroud)

哪个有效.由于iOS上似乎没有直接复制公钥的方法,我首先创建一个信任.

SecTrustRef trust;
OSStatus statusTrust = SecTrustCreateWithCertificates( certificate, secPolicy, &trust);
SecTrustResultType resultType;
OSStatus statusTrustEval =  SecTrustEvaluate(trust, &resultType);
Run Code Online (Sandbox Code Playgroud)

这一切都可以正常使用errSecSuccess结果.

现在我尝试获取公钥.

SecKeyRef publicKey;
publicKey = SecTrustCopyPublicKey(trust);
size_t keysize = SecKeyGetBlockSize(publicKey);
Run Code Online (Sandbox Code Playgroud)

但是publicKey的内容

NSData* keyData = [NSData dataWithBytes:publicKey length:keysize];
Run Code Online (Sandbox Code Playgroud)

与打开.cer文件时看到的公钥不同.所以这是第一个问题.

然后我尝试验证签名,即使我知道公钥是错误的.填充是正确的.

OSStatus verficationResult = SecKeyRawVerify(publicKey,  kSecPaddingPKCS1, [fileData bytes], …
Run Code Online (Sandbox Code Playgroud)

encryption objective-c keychain ios

4
推荐指数
1
解决办法
7482
查看次数

`[AnyObject]`到NSMutableArray

面对问题,同时投射[AnyObject]NSMutableArray.试图将下面的代码转换为swift2.0

 NSString *search = [searchBar.text stringByReplacingOccurrencesOfString:@" " withString:@"%20"];
    [[SpotifySDKAPI sharedInstance]searchSPTracks:self.session searchQuery:search completionHandler:^(SPTListPage *trackList, NSString *error) {
        NSArray* tempArray = trackList.items;
        self.spotifySearchResults = [tempArray mutableCopy];
        [self.tableView reloadData];
    }];
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

objective-c spotify ios swift swift2

1
推荐指数
1
解决办法
2333
查看次数