Какова максимальная длина NSString? Альтернатива NSString - iPhone - PullRequest
1 голос
/ 27 октября 2009
-(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.

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

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

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

Ответы [ 2 ]

4 голосов
/ 27 октября 2009

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

1 голос
/ 27 октября 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...