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]
一步一步地使用和添加东西.但这似乎不是一个好的解决方案.使用zip
和enumerate
可能是同时迭代这两者的更好方法.然而,这种方法意味着拥有一个可变的字典,而不是一个不可变的字典.
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) 我有三件事:文件,签名文件和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) 面对问题,同时投射[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)
ios ×3
objective-c ×3
swift ×2
dictionary ×1
encryption ×1
keychain ×1
nsdictionary ×1
spotify ×1
swift2 ×1