2012-10-11 4 views
0

파일에 데이터를 쓰는 데 문제가 있습니다. 내가 뭘 잘못하고있어? 당신이 그랬던 것처럼NSData를 파일에 쓰면 인식 할 수없는 선택기가 인스턴스로 전송됩니다.

SecTrustRef trust = [protectionSpace serverTrust]; 
SecCertificateRef certificate = SecTrustGetCertificateAtIndex(trust, 0); 
NSData* ServerCertificateData = (__bridge NSData *)(certificate); 
NSError* error; 
[ServerCertificateData writeToFile:ServerCertPath options:NSDataWritingAtomic error:&error]; 
if(error != nil) 
    NSLog(@"%@", error); 

답변

1

당신은 캐스트와 NSData *으로 SecCertificateRef을 변환 할 수 없습니다. 인증서에서 데이터를 가져 오려면 SecCertificateCopyData()을 인증서에 사용해야합니다.

+0

답장을 보내 주셔서 감사합니다. 이제'SecCertificateCopyData()'에서'CFDataRef'를 얻을 때 그것을 어떻게 로컬 파일에 저장해야합니까? 나는'CFURLWriteDataAndPropertiesToResource()'를 사용하거나 더 나은 해결책인가? – kubo

+0

'CFData'는'NSData'와 연결된 수신자 부담 전화이므로, 일단'CFDataRef'를 얻으면 샘플 코드에서했던 것처럼'NSData * '로 형변환 할 수 있습니다. – Guillaume

+0

이제 다리를 고정하는 법을 수정하십시오. '__bridge_transfer'를 사용하여 NSData와 함께 출시 될 가능성이 있습니까? 이제 나는 이런 식으로'CFDataRef body = SecCertificateCopyData (certificate); NSData * ServerCertificateData = (__bridge NSData *) 본문; CFRelease (body); ' – kubo

관련 문제