2012-01-22 46 views
0

我不明白爲什麼下面的代碼只是應該生成隨機字節,並將其顯示爲字符串在TextField中不起作用。該程序正確編譯,但它總是顯示一個空字符串。 (沒有)。問題應該在最後3行,但究竟是什麼?如何在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中。在標準化之前,海灣合作委員會已經通過推廣來支持它 – justin

+0

謝謝你的提示,我不知道。我會解決我的答案。 – seppo0010