Добавить данные в список без удаления предыдущих данных - PullRequest
0 голосов
/ 03 марта 2012

Как видно из названия, я хочу обновить список.На самом деле пользователь приложения будет вводить свои данные в поля данных, а я возьму их и сохраню в виде списка.Он может добавить столько объектов, сколько ему нравится.Я пробовал огромное количество разных кодов для этого персонала, и ни один из них не работает.Прежде всего, взгляните на мой список (я представляю вам xml-код, чтобы вы могли его понять)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <array>
        <dict>
            <key>name</key>
            <string>TEST</string>
            <key>code</key>
            <string>TEST</string>
            <key>longitude</key>
            <integer>22</integer>
            <key>latitude</key>
            <integer>10</integer>
         </dict>
    </array>
</plist>

Это была простая запись.Вот последний код, который я использовал, но мне совсем не повезло

NSMutableDictionary *newBuilding = [NSMutableDictionary alloc];
    [newBuilding setValue:@"Test1" forKey:@"name"];
    [newBuilding setValue:@"Test2" forKey:@"code"];
    [newBuilding setValue:@"10" forKey:@"latitude"];
    [newBuilding setValue:@"20" forKey:@"longitude"];

    NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);

    NSString *documentsPath = [paths objectAtIndex:0];

    NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"BuildingsInfo.plist"];

    NSMutableArray *newArray = [NSMutableArray arrayWithContentsOfFile:plistPath];

    if (nil == newArray) {
        newArray = [[NSMutableArray alloc] initWithCapacity:0];
    }

     [newArray addObject:newBuilding];
 [newArray writeToFile:plistPath atomically: YES];

 }

Кто-нибудь может заметить ошибку?Я писал это много раз, я проверял каждый токен, но не нашел ошибок.Я не могу понять, почему я не хочу работать!

Большое спасибо, ребята

Ответы [ 2 ]

2 голосов
/ 03 марта 2012

Что бы это ни стоило, вы никогда не инициализировали newBuilding.

1 голос
/ 03 марта 2012

Я предполагаю, что newArray возвращает ноль, когда вы пытаетесь загрузить его из файла, что означает несколько вещей.

  • A) Неверный путь (попробуйте войти в систему для подтверждения)
  • B) Файл плохо отформатирован
  • C) По какой-либо причине arrayWithContentsOfFile не создает изменяемый массив в порядке
  • D) Возможно, не хватает памяти

Я заказал их, по-видимому, потому что это реальная проблема.

Кстати, почему бы не использовать вспомогательный конструктор [NSMutableArray array], он работает так же, как ваш код распределения.

Также простой NSLog(@"%@", newArray), и вы получите красиво напечатанный массив на консоль для легкой визуальной отладки:)

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