NSMutableArray всегда возвращает нуль - PullRequest
1 голос
/ 02 января 2012

Моя проблема заключается в том, что когда я читаю содержимое файла plist в NSMutableArray, всегда возвращается ноль

NSString *resourceDocPath = [[NSString alloc] initWithString:[[NSBundle mainBundle]bundlePath]] ;

// Create the new dictionary that will be inserted into the plist.

NSMutableDictionary *nameDictionary = [NSMutableDictionary dictionary];
[nameDictionary setValue:@"walid" forKey:@"id"];
[nameDictionary setValue:@"555 W 1st St" forKey:@"lien"];
NSString *r = [NSString stringWithFormat:@"%@/download.plist", resourceDocPath];
NSLog(@"%@",r);
// Open the plist from the filesystem.
NSMutableArray *plist = [NSMutableArray  arrayWithContentsOfFile:r]; 
 NSLog(@"%@",plist);
if (plist == NULL) 
{
    plist = [NSMutableArray array];
}
[plist addObject:nameDictionary];
 NSLog(@"%@",plist);
[plist writeToFile:r atomically:YES];

когда я смотрю в файл plist, я нашел данные, которые я вставил только один

Можете ли вы помочь мне, пожалуйста?

Ответы [ 2 ]

1 голос
/ 02 января 2012

Вы пытаетесь получить доступ к пакету приложений, а не к каталогу документов, к которому можно получить доступ через NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; NSString *sourcePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Populator"];.Пакет не может быть изменен, поэтому созданный массив никогда не сохраняется, поэтому он никогда не загружается.

1 голос
/ 02 января 2012

Сначала вам не нужно проверять plist == null, но проверять plist == nil

Второй поиск загружаемого файла должен быть изменен на следующее:

NSURL *url = [[NSBundle mainBundle] URLForResource:@"download" withExtension:@"plist"];
NSMutableArray *plist = [NSMutableArray arrayWithContentsOfURL:url];

Третье: Я не думаю, что файл с расширением plist вернет массив.
Это, вероятно, будет представлять собой словарь. Попробуйте создать NSMutableDictionary вместо массива.

...