writeToFile在sim中工作但不在设备上工作

时间:2011-05-14 23:50:12

标签: objective-c cocoa-touch nsmutablearray writetofile

此代码适用于模拟器,但不适用于设备。我很肯定这与写入文件有关:

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 个答案:

答案 0 :(得分:3)

由于沙箱限制(它也会破坏您的代码签名),您无法写入您的应用包。您应该写入应用程序的文档目录。

您可以通过以下方式获取文档目录:

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