2013-03-24 4 views
2

Я хочу поставить строку данных (например, цикл для создания множества url) в файле plist на xcode. это мой код (петля)Как добавить строку данных в файл .plist?

int count = 5; 
NSString *a; 
NSMutableArray *b = [[NSMutableArray alloc] initWithCapacity:count]; 

for (int i=1; i<= count; i++) { 

     a = [NSString stringWithFormat:@"http://192.168.1.114:81/book.php?page=%d",i]; 
     [b addObject:a]; 

    } 

теперь я хочу сохранить любую страницу из верхнего кода в одной строке .plist файла, но я не знаю, что я могу сделать?

вы можете навестить меня?

ответ

0

Попробуйте [b writeToFile:@"myFile.plist" atomically:YES];, но убедитесь, что все данные в вашем массиве представлены в виде plist.

3

Я не уверен совсем то, что вы снимаете, но если вы пытаетесь извлечь HTML из этих строк URL, вы могли бы, вероятно, сделать что-то вроде:

// build path for filename 

NSString *docsPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0]; 
NSString *filename = [docsPath stringByAppendingPathComponent:@"test.plist"]; 

// create array of html results 

NSMutableArray *htmlResults = [NSMutableArray array]; 
for (NSString *urlString in b) 
{ 
    // get the html for this URL 

    NSString *html = [NSString stringWithContentsOfURL:[NSURL URLWithString:urlString] encoding:NSUTF8StringEncoding error:nil]; 

    // add the html to our array (or zero length string if it failed) 

    if (html) 
     [htmlResults addObject:html]; 
    else 
     [htmlResults addObject:@""]; 
} 

// save the html results to plist 

[htmlResults writeToFile:filename atomically:YES]; 

Пара мыслей :

  1. В зависимости от того, сколько страниц есть, я не уверен, что я с ума сошел о загрузке всех страниц в plist. Я либо

    • использование некоторых постоянного хранения, как Core Data, так что я не должен держать все страницы в памяти, или

    • сделать некоторые отложенной загрузки в HTML (загрузить его как Мне это нужно))

  2. Кроме того, если я буду загружать все страницы, учитывая, что это может занять некоторое время, я мог бы иметь представление о ходе, который я обновляю с моим прогрессом, так пользователь не будет смотреть на замороженный экран во время загрузки.

  3. Если вы хотите получить только один файл html, то сохранение этого в plist может не иметь смысла. Я просто напишу html в файл (файл HTML, а не plist).

  4. Обычно мне не хотелось бы загружать html в основную очередь. Я сделал бы dispatch_async, чтобы выполнить это в фоновом режиме. Но я не решаюсь пойти далеко, пока вы не уточните, что именно вы ищете.

Но, надеюсь, это указывает на то, что вы в правильном направлении, показывая вам, как извлекать данные с веб-страниц.


Если вы хотите сохранить отдельные HTML-файлы в какой-то локальный файл (скажем X.html где X является нуля индекс), вы могли бы сделать что-то вроде:

// identify the documents folder 

NSString *docsPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0]; 

// save the html results to local files 

[b enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { 
    NSString *html = [NSString stringWithContentsOfURL:[NSURL URLWithString:obj] encoding:NSUTF8StringEncoding error:nil]; 
    if (html) 
    { 
     NSString *filename = [docsPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%d.html", idx]]; 
     [html writeToFile:filename atomically:YES encoding:NSUTF8StringEncoding error:nil]; 
    } 
}]; 
Смежные вопросы