Problema de conversión de NSData a NString

Obtengo un archivo HTML como NSData y necesito extraer algunas partes de él. Para eso necesito convertirlo a NSString con codificación UTF8. La cosa es que esta conversión falla, probablemente porque el NSData contiene bytes que no son válidos para UTF8. He intentado obtener la matriz de bytes de los datos y revisarlos, pero cada vez que me encuentro con un carácter no ASCII (letras hebreas, por ejemplo), obtengo jibrish.

Se agradecerá la ayuda.

ACTUALIZAR:

Para Gordon - el NSData generado así:

    NSData *theData = [NSURLConnection sendSynchronousRequest:theRequest returningResponse:&theResponse error:&theError];

Cuando digo que la conversión falla, quiero decir que

[[NSString alloc] initWithData:temp encoding:NSUTF8StringEncoding]

devuelve nil

Para Ed. Aquí está mi código (obtuve la matriz de bytes de NSData, encontré lo que necesito y construí otra matriz de bytes a partir de eso: la convertí a NSData y luego intenté convertirla a NSString ... suena un poco complicado ... )

-(NSString *)UTF8StringFromData:(NSData *)theData{
Byte *arr = [theData bytes];
NSUInteger begin1 = [self findIndexOf:@"<li>" bArr:arr size:[theData length]]+4;
NSUInteger end1 = [self findIndexOf:@"</li></ol>" bArr:arr size:[theData length]];
Byte *arr1 = (Byte *)malloc(sizeof(Byte)*((end1-begin1+1)));
NSLog(@"%d %d",begin1, end1);
int j = 0;
for (int i = begin1; i < end1; i++){
    arr1[j] = arr[i];
    j++;
}
arr1[j]='\0';
NSData *temp = [NSData dataWithBytes:arr1 length:j];

return [[NSString alloc] initWithData:temp encoding:NSUTF8StringEncoding];

}

Respuestas a la pregunta(4)

Su respuesta a la pregunta