Запись NSArray в файл - PullRequest
       1

Запись NSArray в файл

3 голосов
/ 04 ноября 2011

Я пытаюсь сохранить / записать массив в каталог документов, и я полностью застрял.Я проверил этот код с несколькими источниками в Интернете.Я переключился с NSArray на NSMutableArray, и это не сработало.Из того, что я могу сказать, файл не пишется, потому что тест возвращается ноль.Заранее спасибо

NSArray *results = [parser objectWithData:data1];

NSMutableArray *array2 = [[NSMutableArray alloc] initWithArray:results];
// Create a dictionary from the JSON string  

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"EmployeeData.plist"];

//NSLog(@"the path is %@, the array is %@", path, array2);

/////write to file/////
[array2 writeToFile:path atomically:YES];

NSMutableArray *test = [[NSMutableArray alloc ]initWithContentsOfFile:path];

NSLog(@"the test is %@", test);

** обновление **

Я добавил эти строки кода

BOOL write = [results writeToFile:path atomically:YES];

NSLog(@"did it right? %@", write);

и запись пуста, что это значит?

Это один из многих объектов в моем массиве

{
     0 = "<null>";
    1 = "John Doe";
    10 = 512;
    11 = "<null>";
    12 = 1;
    13 = 1;
    2 = Doe;
    3 = Jon;
    4 = "<null>";
    5 = johndoe;
    6 = "<null>";
    7 = "<null>";
    8 = "john@doe.com";
    9 = "<null>";
    Type = 1;
    Active = 1;
    Depart = "<null>";
    Emp = "<null>";
    Ext = "<null>";
    FirstName = Jim;
    Fl = 512;
    Name = "John Doe";
    Log = jd;
    Mobile = "<null>";
    Title = "<null>";
}

Имеют ли нулевые значения какое-либо отношение к нему?

решено !!

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

спасибо за помощь

1 Ответ

16 голосов
/ 04 ноября 2011

Согласно документации , writeToFile: работает, только если содержимое вашего массива ограничено несколькими типами (NSString, NSData, NSArray или NSDictionary объекты). Если в вашем массиве есть какой-либо другой тип объекта, он не будет правильно записывать в файл (или вообще не будет).

Также обратите внимание, что writeToFile: возвращает логическое значение, указывающее, успешно ли выполнена операция.

Если ваш массив содержит несовместимые типы, вам придется использовать что-то вроде NSKeyedArchiver для сериализации данных.

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