Плисты и связи - PullRequest
       23

Плисты и связи

0 голосов
/ 18 июля 2009

У меня есть приложение, которое должно подключаться и получать данные, которые отличаются каждый раз, когда вы нажимаете на одной вкладке. Затем, чтобы показать данные пользователю, я использую «element.plist», где у меня есть один массив словарей (каждый словарь имеет информацию в разных строках: имя, категория, ...). Я загружаю информацию из этого списка.

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

  1. удалить содержимое в листе
  2. сохранить новый контент (я могу сделать это методом парсера, каждый раз, когда у меня есть один объект со всей информацией)
  3. Читайте информацию, как я делаю сейчас.

Шаг, который я не могу сделать, - второй.

спасибо

Ответы [ 2 ]

0 голосов
/ 24 августа 2009

Мей,

Я не уверен, что понимаю ваше заявление о наличии пустого списка. Я предполагаю, что вы имеете в виду, что если вы прочитаете созданный вами plist-файл, он будет нулевым, когда вы его распечатаете. Предполагается, что вы пишете пустой файл или неправильно читаете или ...

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

И будьте осторожны - я новичок в Задаче C и т. Д. Вот способ сделать то, что, я думаю, вы пытаетесь сделать.

// Implement viewDidLoad to do additional setup after loading the view, 
// typically from a nib.
- (void)viewDidLoad {
    NSBundle *bundle = [NSBundle mainBundle];
    NSString *plistPath = [bundle pathForResource:@"TmpPList" ofType:@"plist"]; //Not NARC
    //NSLog(@"plistPath : %@", plistPath);
    //My plist is a simple array, but it could be an array of dictionary objects etc
    NSMutableArray *arrayFromPList = [[NSMutableArray alloc] initWithContentsOfFile:plistPath]; //NARC
    //NSLog(@"arrayFromPList : %@", arrayFromPList);
    //Delete the arrays contents and put new contents
    [arrayFromPList removeAllObjects];
    //NSLog(@"arrayFromPList : %@", arrayFromPList);
    //[arrayFromPList addObjectsFromArray:[NSArray arrayWithObjects:@"A", @"B", "@C", nil]];
    //NSLog(@"arrayFromPList : %@", arrayFromPList);
    [arrayFromPList setArray:[NSMutableArray arrayWithObjects:@"A", @"B", @"C", @"D", @"E", @"F", nil]];
    //NSLog(@"arrayFromPList : %@", arrayFromPList);
    /* */
    //Write it out to the original file name
    [arrayFromPList writeToFile:plistPath atomically:YES];
    NSMutableArray *newArray = [[NSMutableArray alloc] initWithContentsOfFile:plistPath]; //NARC
    NSLog(@"newArray : %@", newArray);
    [arrayFromPList release];
    [newArray release];    
}
0 голосов
/ 18 июля 2009

Я не уверен, что полностью понимаю ваш вопрос, но я постараюсь помочь.

ниже приведен пример кода Apple, который сохраняет список при выходе из приложения.

вторая строка задает имя файла plist:

NSString * bundlePath = каталог приложения + «Данные»

третья строка определяет словарь со всеми сохраняемыми данными:

NSDictionary * plistDict

четвертая строка форматирует этот словарь как данные списка свойств:

NSData * plistData

, который затем сохраняется как Data.plist

- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender 
{
    NSString *errorDesc;
    NSString *bundlePath = [[NSBundle mainBundle] pathForResource:@"Data" ofType:@"plist"];

    NSDictionary *plistDict = [NSDictionary dictionaryWithObjects:
            [NSArray arrayWithObjects: personName, phoneNumbers, nil]
            forKeys:[NSArray arrayWithObjects: @"Name", @"Phones", nil]];
    NSData *plistData = [NSPropertyListSerialization dataFromPropertyList:plistDict
            format:NSPropertyListXMLFormat_v1_0
            errorDescription:&errorDesc];
    if (plistData) 
    {
        [plistData writeToFile:bundlePath atomically:YES];
    }
    else {
        NSLog(errorDesc);
        [errorDesc release];
    }
    return NSTerminateNow;
}

Вы можете найти эту информацию в Руководстве по программированию списка свойств

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