2015-12-16 3 views
-2

У меня есть код для получения данных plist-файла и кода для записи данных в файл plist. Теперь дело в том, что он добавляет считываемые данные в один массив (см. Изображения). Я хочу это в разных массивах (см зеленый изображение)Запись NSArray в файл plist

Вот мой код:

- (void)WriteData { 
NSFileManager *fileManager = [NSFileManager defaultManager]; 
NSError *error; 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 

NSString *path = [documentsDirectory stringByAppendingPathComponent:@"MuziekList.plist"]; 

if ([fileManager fileExistsAtPath:path] == NO) { 
    NSString *resourcePath = [[NSBundle mainBundle] pathForResource:@"MuziekList" ofType:@"plist"]; 
    [fileManager copyItemAtPath:resourcePath toPath:path error:&error]; 
} 
//_______________________________________________________________________________________________________________ 
NSMutableDictionary *savedStock = [[NSMutableDictionary alloc] initWithContentsOfFile: path]; 

//load from savedStock example int value 
NSArray *NummerTexts; 
NummerTexts = [savedStock objectForKey:@"Nummers"]; 
NSString *NummerTextsR = [[NummerTexts valueForKey:@"description"] componentsJoinedByString:@" - "]; 

NSArray *ArtiestTexts; 
ArtiestTexts = [savedStock objectForKey:@"Artiesten"]; 
NSString *ArtiestTextsR = [[ArtiestTexts valueForKey:@"description"] componentsJoinedByString:@" - "]; 
//_______________________________________________________________________________________________________________ 

NSUserDefaults *CurrentVideoNummerResult = [NSUserDefaults standardUserDefaults]; 
NSString *CurrentVideoNummer = [CurrentVideoNummerResult stringForKey:@"CurrentVideoNummer"]; 

NSUserDefaults *CurrentVideoArtiestResult = [NSUserDefaults standardUserDefaults]; 
NSString *CurrentVideoArtiest = [CurrentVideoArtiestResult stringForKey:@"CurrentVideoArtiest"]; 

/* 
NSUserDefaults *CurrentVideoIDResult = [NSUserDefaults standardUserDefaults]; 
NSString *CurrentVideoID = [CurrentVideoIDResult stringForKey:@"CurrentVideoID"]; 
*/ 

NSMutableDictionary *plist = [[NSDictionary dictionaryWithContentsOfFile:path] mutableCopy]; 
NSMutableArray *newArray = [[NSMutableArray alloc] init]; 
NSMutableArray *newArray2 = [[NSMutableArray alloc] init]; 

newArray = [NSMutableArray arrayWithObjects:CurrentVideoNummer, NummerTextsR, nil]; 
[plist setObject:newArray forKey:@"Nummers"]; 


newArray2 = [NSMutableArray arrayWithObjects:CurrentVideoArtiest, ArtiestTextsR, nil]; 
[plist setObject:newArray2 forKey:@"Artiesten"]; 

[plist writeToFile:path atomically:YES]; 
} 

Нажмите ссылку для изображений

https://www.dropbox.com/sh/wrk8h8cnwye8myx/AADl4omkGdl3S4ESXv6NbymVa?dl=0

+1

Это действительно сложно понять. Можете ли вы попытаться указать в тексте здесь простой текст, что именно вы пытаетесь выполнить при чтении и записи массивов? – RyanR

ответ

0

Ваш вопрос и проблема запутаны. Может быть, это поможет:

Ваш код считывает текущий массив (NummerTexts), сглаживает этот массив в одну строку (NummerTextsR), получает вторую строку (CurrentVideoNummer), затем строит массив из двух элементов (newArray).

Возникает вопрос, почему вы получаете двухэлементный массив ...?

Если вы не хотите, чтобы сгладить свой исходный массив не делать, просто сделать изменяемую копию, что-то вроде:

NSMutableArray *existingTexts = [[NummerTexts valueForKey:@"description"] mutableCopy]; 

добавить новый элемент:

[existingTexts addObject:currentVideoNummer]; 

и напишите, как вы уже есть.

НТН

КСТАТИ Не начинайте имена локальных переменных с прописной буквы, это идет вразрез с конвенцией и поэтому подсветка синтаксиса в вашем вопросе все не так.

+0

Итак, я попробовал, и это почти то, что я хочу, но теперь он выглядит так: https://www.dropbox.com/s/3a3pxbof9irqkjf/NOT%20YET.png?dl=0 Мне нужно это: https: //www.dropbox.com/s/avdt33umncb6a7c/5%20%28GREEN%29.png?dl=0 Но спасибо за вашу помощь. Может быть, вы можете мне помочь –

+0

Из ваших изображений вместо добавления элемента в массив вы создали новый массив из двух элементов, один из которых является существующим массивом, а другой - элементом. Вам нужно внимательно прочитать ваш код и выяснить, как вы совершили эту ошибку. Вы также можете пройти через отладчик и посмотреть, как ваши переменные меняются, чтобы помочь вам разобраться. – CRD

+0

Я понял свою проблему, спасибо за вашу помощь! –

Смежные вопросы