2009-10-27 6 views
1
-(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; 
} 

Je souhaite enregistrer la réponse du service Web asp.net dans un fichier plist.Quelle est la longueur maximale de NSString? Alternative à NSString - iPhone

Mais parfois, lorsque la réponse peut être dans une taille énorme. Dans une telle situation, la connexion a reçu des données de plus de 50 000 octets. & Lorsque je NSlogs NSString - il imprime (null).

Dans ce cas, je ne peux pas stocker la réponse du service Web au fichier.

Quelle devrait être la solution pour cela? Existe-t-il un autre moyen de NSString? (à cet effet)

Merci d'avance.

Sagar.

Répondre

4

Si vous voulez stocker quelque chose, vous avez déjà les octets: [myWebData mutableBytes]

+0

Vous pouvez créer un fichier avec octets, mutable ou immuable. Voir http://developer.apple.com/iphone/library/documentation/Cocoa/Reference/Foundation/Classes/NSData_Class/Reference/Reference.html#//apple_ref/doc/uid/20000172-CIAEAHFJ pour une méthode à utiliser. –

+0

Vous pouvez générer l'équivalent en octets "" et rechercher la plage d'octets associée dans l'objet de données modifiable. Vous pouvez ensuite remplacer ces octets par NULL: http://developer.apple.com/mac/library/DOCUMENTATION/Cocoa/Reference/Foundation/Classes/NSMutableData_Class/Reference/NSMutableData.html#//apple_ref/doc/uid/20000173 -BGBBIABA –

+0

Monsieur, Mais, ici, je suis confus. Quel que soit le service Web a répondu, je veux supprimer une partie comme indiqué dans la question. ma question est "est-ce possible avec nsstring?" "les données mutables sont-elles plus préférables?" "comment le remplacer en utilisant des données nsmutable?" –

1

Il est un appareil mobile, souvenez-vous. La mémoire est extrêmement limitée et quand vous dites que vous voudrez peut-être allouer plus de 500000 octets, cela me donne un drapeau rouge. Cela va être un problème pour vous avec cette conception. Envisager de trouver un algorithme de diffusion en continu ou de morceau si la taille du fichier est supérieure à n. Peut-être que votre service Web peut fractionner la réponse en parties d'une taille raisonnable (et maximale connue) et l'appareil et les écrire dans le fichier comme il les reçoit?

+0

Désolé. Mais par erreur, j'ai ajouté un zéro de plus. –

+0

Ah. 50 K s'améliore :) – marcc

+0

Monsieur, j'ai mis à jour plus de détails. Ce qui indique clairement pourquoi j'ai besoin de données au format nsstring. –

Questions connexes