对于iOS 7,我在将文件写入
Xcode 5中的AppSupport文件夹时遇到了麻烦.
我正在尝试做什么:
我正在尝试做什么:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory,NSUserDomainMask,YES); NSString *plistPath = [[paths lastObject] stringByAppendingPathComponent:@“somedata.plist”]; if(plistData) { NSLog(@"PATH: %@",plistPath); BOOL success = [plistData writeToFile:plistPath atomically:YES]; NSLog(@"SUCCESS: %hhd",success); } else { NSLog(@"ERROR CREATING PLIST: %@",error); }
而我输出NO:
PATH: /var/mobile/Applications/40954....7E3C/Library/Application Support/somedata.plist SUCCESS: 0
Apple文档说:
Use the Application Support directory constant NSApplicationSupportDirectory,appending your <bundle_ID> for: …
什么意思附加你的bundle_ID?可能还有另一条路我应该用? NSDocumentDirectory不适合我,因为它是用户文件的位置.
解决方法
存储到NSApplicationSupportDirectory有点复杂,
按照此Apple sample code将文件写入此目录,
- (NSURL*)applicationDirectory { NSString* bundleID = [[NSBundle mainBundle] bundleIdentifier]; NSFileManager*fm = [NSFileManager defaultManager]; NSURL* dirPath = nil; // Find the application support directory in the home directory. NSArray* appSupportDir = [fm URLsForDirectory:NSApplicationSupportDirectory inDomains:NSUserDomainMask]; if ([appSupportDir count] > 0) { // Append the bundle ID to the URL for the // Application Support directory dirPath = [[appSupportDir objectAtIndex:0] URLByAppendingPathComponent:bundleID]; //Modified code to write your plist file to the Application support dir NSString *plistPath = [dirPath stringByAppendingPathComponent:@“somedata.plist”]; //Assuming plistData is pre-populated ivar //Else add your code to create plistData here if(plistData) { BOOL success = [plistData writeToFile:plistPath atomically:YES]; NSLog(@"SUCCESS: %hhd",success); } else { NSLog(@"ERROR CREATING PLIST: %@",error); } } }