2012-01-22 3 views
0

임의의 바이트를 생성하고 TextField에 문자열로 표시하는 다음 코드가 작동하지 않는 이유를 알 수 없습니다. 프로그램이 올바르게 컴파일되지만 항상 null 문자열이 표시됩니다. (아무것도). 문제는 마지막 세 줄에 있어야하지만 정확히 무엇입니까?TextField에 NSMutableData를 표시하는 방법은 무엇입니까?

- (NSData *)randomDataOfLength:(size_t)length { 

    NSMutableData *data = [NSMutableData dataWithLength:length]; 

    int result = SecRandomCopyBytes(kSecRandomDefault, 
           length, 
           data.mutableBytes); 
    NSAssert(result == 0, @"Unable to generate random bytes: %d", 
     errno); 

    unsigned char byteBuffer[[data length]]; 
    [data getBytes:byteBuffer]; 

    [textresult setText:[NSString stringWithUTF8String:(char *)byteBuffer]]; 
    ... 

텍스트 결과는 TextField로 간주됩니다.

답변

1

이 시도 :

- (NSData *)randomDataOfLength:(size_t)length { 
    NSMutableData *data = [NSMutableData dataWithLength:length]; 
    int result = SecRandomCopyBytes(kSecRandomDefault, length, data.mutableBytes); 
    NSAssert(result == 0, @"Unable to generate random bytes: %d", errno); 

    NSString* str = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease]; 
    [textresult setText:str]; 
+0

실제로 부호 '문자의 ByteBuffer [* * 변수]'C99에 유효하다. GCC는 표준화되기 전에 확장으로 지원했습니다. – justin

+0

그 주셔서 감사합니다, 나는 그것을 몰랐습니다. 내 대답을 고쳐 줄게. – seppo0010

관련 문제