aLFaRSi
aLFaRSi

Reputation: 559

How to write to AppName-Info.plist

i added a key called "App" to my AppName-Info.plist manually , i can get the value from it by calling this code

NSBundle *mainBundle;
mainBundle = [NSBundle mainBundle];

NSString *value = [mainBundle objectForInfoDictionaryKey:@"App"];

NSLog(@"App: %@",value);

But what i couldn't do is changing the value with any code.. is it possible ? and if yes how can it be done ?

thanks for help in advance :)

Upvotes: 1

Views: 3368

Answers (3)

Damo
Damo

Reputation: 12890

It's not possible.

By default the AppName-Info.plist isn't copied into the bundle in the Copy Bundle Resources phase of the build.

So if you want to have a plist which you can write to an option would be to create it at run time in the temporary files location and read/write to it there.

This is a great place to research how to do it.

Upvotes: 1

Buntylm
Buntylm

Reputation: 7373

You should consider NSUserDefaults or if you want to modify a bundled .plist try this.

    NSString* plistFilePath = nil;
NSFileManager* manager = [NSFileManager defaultManager];
if ((plistFilePath = [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"mySpecial/PathTo.plist"])) 
{
    if ([manager isWritableFileAtPath:plistFilePath]) 
    {
        NSMutableDictionary* infoDictioio = [NSMutableDictionary dictionaryWithContentsOfFile:plistFilePath];
        [infoDictio setObject:@"foo object" forKey:@"fookey"];
        [infoDictio writeToFile:plistFilePath atomically:NO];
        [manager setAttributes:[NSDictionary dictionaryWithObject:[NSDate date] forKey:NSFileModificationDate] ofItemAtPath:[[NSBundle mainBundle] bundlePath] error:nil];
    }
}

Upvotes: 4

miho
miho

Reputation: 12085

You should not modify your apps Info.plist file (or anything in your app's bundle) at runtime. This is bad practice and will also break your bundles code signature (which will result in not being able to launch the app anymore!).

If you want to store settings you should have a look at NSUserDefaults.

Upvotes: 2

Related Questions