Your path is wrong. If your plist is in your app resources, then you have to use NSBundle
to get it's absolute path.
NSString *path = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"plist"];
NSMutableDictionary *dict = [[NSDictionary dictionaryWithContentsOfFile:path]
mutableCopy];
If it's in your app's documents folder, you can do this:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;
NSString *path = [basePath stringByAppendingPathComponent:@"data.plist"];
NSMutableDictionary *dict = [[NSDictionary dictionaryWithContentsOfFile:path] mutableCopy];
Note that a dictionary or array loaded from a plist is always immutable. You have to create a mutable copy.