2013-04-02 3 views
0

У меня есть массив из 40 элемента и внутри этого dict.Dict содержит элемент 2 строки, я хочу, чтобы написать строку в элемент 0 до 1, когда пользователь нажимает на UIButtonКак обновить строку внутри PLIST

<array> 
    <dict> 
     <key>quote</key> 
     <string>Some Quotes</string> 
     <key>favorite</key> 
     <string>0</string> 
    </dict> 

</array> 

Я применяю следующий код, но он Doesn `T работа для меня ...

-(void) addFavorite 
{ 
    NSLog(@"Hello"); 

    [someButton setImage:[UIImage imageNamed:@"add_favoritegold.png"] forState:UIControlStateHighlighted]; 
    NSURL *documents = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; 
    NSURL *plistUrl = [documents URLByAppendingPathComponent:@"quotes.plist"]; 
    NSArray *plistContents = [NSArray arrayWithContentsOfURL:plistUrl]; 
    NSMutableDictionary *editFavorite = [plistContents objectAtIndex:1]; 
} 

это не меняет своего любимца от 0 до 1, и мой PLIST в опорном файле делать я должен делать какие-либо изменения в списке свойств.

+0

Можете ли вы показать мне данные вашего .plist файла? – Bhavin

+0

@Vin Я обновил свой вопрос. – 2013-04-02 13:01:28

+0

Не могли бы вы немного объяснить? –

ответ

1
-(void)btnClicked 
{ 
    [arr_Data addObject:str1]; 
    [arr_Data addObject:str2]; 

    // get paths from root direcory 
    NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); 

    // get documents path 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 

    // get the path to our Data/plist file 
    NSString *path = [documentsDirectory stringByAppendingPathComponent:@"Data.plist"]; 

    // This writes the array to a plist file. If this file does not already exist, it creates a new one. 
    [arr_Data writeToFile:path atomically: TRUE]; 
} 
+0

Как обновить определенную строку в словаре. у вас есть идея – 2013-04-03 08:39:17

+0

Скопируйте свой словарь в NSMutableArray и используйте objectAtIndex. – Rushi

0

Это простой 4 Шаг процесса:

1) Выберите словарь (вы хотите обновить "любимый" тег).

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

2) Set New Value.

[yourDict setValue:@"1" forKey:@"favorite"]; 

3) Вставьте его в массив.

NSMutableArray *yourArray = [[NSMutableArray alloc] init]; 
[yourArray addObject:yourDict]; 

4) Написать этот массив yourPath.

[yourArray writeToURL:yourPath atomically:YES]; 
+0

Я хочу добавить особый элемент 's любимый, когда пользователь нажимает на то, что у меня есть индекс этого элемента, так как я могу написать любимый или обновить избранное 0 до 1 – 2013-04-02 13:04:39

+0

Я отредактировал ответ. Проверь это. – Bhavin

+0

Но как он может понять, какую любимую строку конкретного элемента нужно обновить. Записан, что я новичок в iphone, поэтому я спросил – 2013-04-02 13:19:23

0

использование [yourArray writeToURL:yourPath atomically:YES]; для хранения данных

+0

Есть ли у вас целые фрагменты кода, чтобы показать, как обновить строку внутри словаря – 2013-04-03 08:40:09

+0

У меня есть сообщение код на странице, пожалуйста, обратитесь к – dhaya

1

Пожалуйста, обратитесь ниже код для вашей концепции

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
     NSString *plistdocumentsDirectory = [paths objectAtIndex:0]; 
    NsString * plistFilePath = [plistdocumentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"filename.plist"]]; 
    NSMutableArray *savedStock = [[NSMutableArray alloc] initWithContentsOfFile:plistFilePath]; 
    [[savedStock objectAtIndex:indexForWheretoStoreData] setObject:@"your value" forKey:@"your key"]; 
    [savedStock writeToFile:filePath atomically:YES]; 
+0

У меня есть мой plist в файле поддержки.его не меняется в этом файле - это любое изменение, которое я должен сделать в этом. поскольку bharat говорит, что вы не можете обновить plist, который находится в комплекте ресурсов, вам нужно либо создать его в каталоге приложений, либо скопировать его из пакета в каталог документа. – 2013-04-03 09:36:24

+0

Да, если файл в главном комплекте означает, что вы не можете изменить, поэтому скопируйте файл в папку с документами – dhaya

+0

, поэтому мне нужно создать папку с документами. Потому что в моем проекте она недоступна, поэтому, как ее добавить. Я не знал, потому что я новичок в iphone, работающий с 5 или 6 дней – 2013-04-03 11:08:34

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