2010-12-22 6 views
1

Ich suche die Zimt-Bibliothek und die ZTWebSocket Klasse hat eine ‚Senden‘ Methode zu verwenden, das NSString mit dieser Unterschrift akzeptiert:UTF8 NSString und Zimt des ZTWebSocket

- (void)send:(NSString *)message; 

Ich mag entlang Daten als UTF8 senden string, aber die Methode akzeptiert nur regulären NSString. Was muss ich tun, um die Warnung des Compilers zu vermeiden? Kann ich ohne Probleme von UTF8 auf normale Saite umwandeln?

websocket = [[ZTWebSocket alloc] ...]; 

// 1) this will also generate a warning about incompatible pointer type for the arguments 
[websocket send:[message UTF8String]]; 

// 2) what happens during transmission if I cast this back to a regular string? 
[websocket send:(NSString *)[message UTF8String]]; 

Antwort

1

Sie können nicht -UTF8String verwenden, da diese ein Standard-C liefern const char *, keine NSString.

Das Framework müssten Sie verwenden ein Verfahren zur Änderung der Codierung auszusetzen, da sie die Bytes aus dem String an einem gewissen Punkt mit einigen Codierung erhalten müssen (es sei denn es eine veraltete Methode verwendet, die nicht die Kodierung angegeben).

Kurz gesagt, sprechen Sie mit den Jungs, die den Rahmen und bitten ihren Rat;)

EDIT | Ich habe gerade the source auf github.com angeschaut, und es ist tatsächlich fest programmiert UTF8 zu verwenden, also bist du ok.

Auszug:

-(void)send:(NSString*)message { 
    NSMutableData* data = [NSMutableData data]; 
    [data appendBytes:"\x00" length:1]; 
    [data appendData:[message dataUsingEncoding:NSUTF8StringEncoding]]; 
    [data appendBytes:"\xFF" length:1]; 
    [socket writeData:data withTimeout:-1 tag:ZTWebSocketTagMessage]; 
}