The following code saves a value to a number of NSUserDefaults where the filenames are generated from a string stored in a .plist (eg. 'storedbook1', 'storedbook2' where the strings stored in the .plist are 'book1', 'book2' etc.). However, I only want to target one NSUserDefault at a time. How can I amend the code to be specific? (eg. If I wanted give 'storedbook20' the value of 3).

```
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory =  [paths objectAtIndex:0];
NSString *myListPath = [documentsDirectory stringByAppendingPathComponent:@"books.plist"];
tableData = [[NSArray alloc]initWithContentsOfFile:myListPath];

for (NSDictionary* dict in tableData) {
    NSString *key = [NSString stringWithFormat:@"stored%@", dict[@"filename"]];
    [standardUserDefaults setObject:[NSNumber numberWithInt:5] forKey: key];
    [standardUserDefaults synchronize];
}

```

Sample .plist

```
<array>
    <dict>
        <key>title</key>
        <string>title1</string>
        <key>filename</key>
        <string>book1</string>
    </dict>
    <dict>
        <key>title</key>
        <string>title2</string>
        <key>filename</key>
        <string>book2</string>
    </dict>
</array>

```

Using the following code show that both storedbook1 and storedbook2 have the value of 5 added when I only want to add the value of 5 to one at a time (there's a lot more than two items in the real .plist):

```
NSNumber *checkednew = 0;
checkednew = [standardUserDefaults objectForKey: key];
int checknew = [checkednew intValue];

NSLog(@"%@", key);
NSLog(@"%d", checknew);

```

The output for key is:

storedbook1
5
storedbook2
5