2009-10-27 3 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; 
} 

Я хочу сохранить в ответ веб-службу asp.net в файле plist.Какова максимальная длина NSString? Альтернатива NSString - iPhone

Но иногда, когда ответ может быть в огромных размерах. В такой ситуации соединение получило данные более 50 000 байт. & Когда я NSlogs NSString - он печатает (null).

В этом случае я не могу хранить ответ веб-службы на файл.

Что должно быть решением для этого? Есть ли альтернативный способ NSString? (для этой цели)

Заранее спасибо.

Sagar.

ответ

4

Если вы хотите сохранить что-то, у вас уже есть байты: [myWebData mutableBytes]

+0

Вы можете создать файл с байтами, изменяемый или неизменяемый. См. Http://developer.apple.com/iphone/library/documentation/Cocoa/Reference/Foundation/Classes/NSData_Class/Reference/Reference.html#//apple_ref/doc/uid/20000172-CIAEAHFJ для одного метода. –

+0

Вы можете сгенерировать байт-эквивалент '' и найти связанный диапазон байтов в изменяемом объекте данных. Затем вы можете заменить эти байты на NULL: http://developer.apple.com/mac/library/DOCUMENTATION/Cocoa/Reference/Foundation/Classes/NSMutableData_Class/Reference/NSMutableData.html#//apple_ref/doc/uid/20000173 -BGBBIABA –

+0

Сэр, Но, здесь я смущен. Какой бы веб-сервис не ответил, я хочу удалить часть, указанную в вопросе. мой вопрос: «возможно ли это с помощью nsstring?» «изменчивые данные более предпочтительны?» «как заменить его, используя nmutable data?» –

1

Это мобильное устройство, помнить. Память крайне ограничена, и когда вы говорите, что можете выделить более 500 000 байт, она бросает мне красный флаг. Это будет проблемой для вас с этим дизайном.

Рассмотрите возможность создания алгоритма потоковой передачи или фрагмента, если размер файла превышает n. Может быть, ваш веб-сервис может разбить ответ на части разумного (и известного максимального) размера и устройства и записать их в файл по мере их получения?

+0

Извините. Но по ошибке я добавил еще один ноль. –

+0

Ах. 50 K становится лучше :) – marcc

+0

Сэр, я обновил более подробную информацию. Что четко указывает, зачем мне нужны данные в формате nsstring. –

Смежные вопросы