Domanda

-(void)connectionDidFinishLoading:(NSURLConnection *)connection {
    NSString *theXML = [[NSString alloc] initWithBytes: [myWebData mutableBytes] length:[myWebData length] encoding:NSUTF8StringEncoding];
    NSLog(@"%@",theXML);    
    [self actualString:theXML 
            extractMyData:@"<?xml version=\"1.0\" encoding=\"utf-8\"?><soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"><soap:Body><GetCategoryResponse xmlns=\"http://tempuri.org/\"><GetCategoryResult>"
            endingString:@"</GetCategoryResult></GetCategoryResponse></soap:Body></soap:Envelope>" 
            emptyString:@"<Prop_Category />"];
    [theXML writeToFile:[self GetMyFilePath] atomically:YES encoding:NSStringEncodingConversionAllowLossy error:nil];
    [theXML release];
}

-(NSArray*)actualString:(NSString*)theXML extractMyData:(NSString*)prefixString endingString:(NSString*)suffixString emptyString:(NSString*)noDataFromXMLString{
    // now here I want to extract data from string
    // from theXML
}

-(NSString*)GetMyFilePath{
    NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
    NSString *documentDirectory=[paths objectAtIndex:0];
    NSString *pathToUserCopyofplist=[documentDirectory stringByAppendingPathComponent:@"myWebServiceData.plist"];
    NSLog(@"%@",pathToUserCopyofplist);
    return pathToUserCopyofplist;
}

Voglio salvare la risposta del servizio web asp.net in un file plist.

Ma a volte, quando la risposta può essere di dimensioni enormi. In tale situazione, la connessione ha ricevuto dati più di 50.000 byte. E quando NSlogs NSString - stampa (null).

In questo caso non riesco a memorizzare la risposta del servizio Web al file.

Quale dovrebbe essere la soluzione per questo? Esiste un modo alternativo di NSString? (a tal fine)

È stato utile?

Soluzione

Se vuoi archiviare qualcosa, hai già i byte: [myWebData mutableBytes]

Altri suggerimenti

È un dispositivo mobile, ricorda. La memoria è estremamente limitata e quando dici che potresti voler allocare più di 500000 byte, lancia una bandiera rossa per me. Questo sarà un problema per te con questo design.

Prendi in considerazione l'idea di creare un algoritmo di streaming o chunk se la dimensione del file è n . Forse il tuo servizio web può suddividere la risposta in parti di dimensioni ragionevoli (e note massime) e nel dispositivo e scriverle nel file man mano che li riceve?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top