writeToFile работает в симе, а не на устройстве - PullRequest
1 голос
/ 15 мая 2011

Этот код работает на симуляторе, но не на устройстве. Я уверен, что это как-то связано с записью в файл:

NSString *path = [[NSBundle mainBundle] pathForResource:@"SongData" ofType:@"plist"];
        NSArray *tempData = [[NSArray alloc] initWithContentsOfFile: path];

        NSMutableArray *arr = [[NSMutableArray alloc] init];
        for (NSDictionary *dict in tempData) {
            NSMutableDictionary *new = [[dict mutableCopy] autorelease];
            if ([[new objectForKey:@"Song Title"] isEqualToString:[[tableData objectAtIndex:[indexPath row]] objectForKey:@"Song Title"]]) {
                BOOL fav = [[new objectForKey:@"Favorite"] boolValue];
                [new setObject:[NSNumber numberWithBool:!fav] forKey:@"Favorite"];
            }
            [arr addObject:new];
        }
        [arr writeToFile:path atomically:YES];

Я в основном пишу в файл NSMutableArray, я не уверен, что атомарно означает, но я пробовал и да, и нет, оба не работают.

Спасибо.

1 Ответ

3 голосов
/ 15 мая 2011

Вы не можете писать в свой пакет приложений из-за ограничений песочницы (это также нарушит вашу подпись кода).Вместо этого вы должны написать в каталог документов вашего приложения.

Вы можете получить каталог документов с помощью:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *docPath = [paths objectAtIndex:0];
...