You should change the way how you keep your data in plist.
It should be like that:
For table view you select objectAtIndex of current [indexPath row]. You make you UITableViewCell configurable from those "book NSDictionary" - you can add to those objects "checked" property if necessary and easily modify it.
It is much better approach if you want to delete / edit / create objects in your system. With that approach you don't have a problem of missing indexes for selected objects etc.
Once you have NSDictionary in your UITableViewCell you can add that property like that:
[dict setValue:[NSNumber numberWithBool:YES] forKey:@"checked"];
To get value:
[[dict valueForKey:@"checked"] boolValue];