2012-01-25 2 views
0

안녕하세요 JSON을 통해 서버로 데이터를 전송해야하고 보통 나는 그런 식으로 작업을 수행합니다아이폰 URL 이스케이프 문제

NSMutableString * temp=[[NSMutableString alloc] initWithString:service_registra_inc]; 
    //here I add more staff to temp 
    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:temp]]; 
    [[NSURLConnection alloc] initWithRequest:request delegate:self]; 

하지만 URL이 잘못 몇 가지 오류 메시지가 : URL 길이하지만 난 뭔가를 주변 수색과 내가 나를 위해 작동하지 않습니다이 fonction 발견 내 URL의시를 탈출해야 의미

NSString *temp2=(__bridge_transfer NSString*)CFURLCreateStringByAddingPercentEscapes(NULL,((CFStringRef)temp.UTF8String),NULL,NULL,kCFStringEncodingUTF8); 

및 프로그램이 그냥 정지를하고 signal EXC_BAD_ACCess을 말한다.

글쎄, 나는 xcode가 단지 나를 위해 교정을 제안했지만 실제로 무슨 일이 일어나고 있는지 이해하지 못하기 때문에 변경 가능한 문자열을 CFStringRef로 변환하는 방법을 모른다. 제발 도와주세요 .... 나는 문서를 읽었지만 NSSMutableString을 CFStringRef로 캐스팅하는 방법이나 다시 말해서 NSURL 개체를 직접 만드는 방법을 알려주지 않습니다. Thks

답변

1

왜 CFURL & CFStringRef 함수를 사용하고 있습니까?

NSString의 stringByAddingPercentEscapesUsingEncoding: 메서드를 통해 수행하려는 작업을 수행 할 수 있습니다. 내가 당신을 위해 설명서를 연결했습니다.

뭔가 같은 :

NSMutableString * temp=[[NSMutableString alloc] initWithString:service_registra_inc]; 

// append your staff... errr, stuff here. 

NSString * temp2 = [temp stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]; 
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:temp2]]; 
[NSURLConnection alloc] initWithRequest:request delegate:self]; 

1

NSString *toll-free bridging으로 알려진 메커니즘을 통해 CFStringRef이다 (당신은 ARC를 사용하지 않는 경우 물건을 해제하는 것을 잊지 마세요)과 NSMutableString *입니다 또한 NSString *을 상속합니다. 그래서 코드의 두 번째 행은 다음과 같습니다

는 실제로
NSString *temp2 = (__bridge_transfer NSString *) 
     CFURLCreateStringByAddingPercentEscapes(
     NULL, 
     (CFStringRef)temp, 
     NULL, 
     NULL, 
     kCFStringEncodingUTF8); 

비록 당신이 선호 할 수 있습니다

비 소유 참조하여 객체를 반환 보조 장점이있다
NSString *temp2 = 
      [temp stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

, 당신이 돈 때문에 ' ARC를 사용하지 않더라도 릴리스하는 것에 대해 걱정할 필요가 없습니다.