我有两个方法,一个用于将数组保存到文件中,另一个用于从文件中加载数组,但是当我尝试读取数组时,没有任何反应,就像数组是空的一样。 我的代码:
- (IBAction)write:(id)sender
{
NSArray *array = [racersArray copy];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *libraryDirectory = [paths objectAtIndex:0];
NSString *location = [libraryDirectory stringByAppendingString:@"/history.plist"];
[array writeToFile:location atomically:YES];
}
- (IBAction)read:(id)sender
{
NSString *path = [[NSBundle mainBundle] pathForResource:@"file" ofType:@"plist"];
NSArray *array = (path != nil ? [NSArray arrayWithContentsOfFile:@"/history.plist"] : nil);
}
答案 0 :(得分:5)
您正在/从两个不同的地方读/写。
searchField.text
文件夹(它应该在Library
或其他类似文件夹下,但我离题了。)答案 1 :(得分:0)
尝试使用此方法可能会对您有所帮助。
保存
-(IBAction)save_Action:(id)sender{
NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsPath = [paths objectAtIndex:0];
NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"manuallyData.plist"];
[plistData writeToFile:plistPath atomically:YES];
}
获取路径
-(IBAction)retrive:(id)sender{
NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsPath = [paths objectAtIndex:0];
NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"manuallyData.plist"];
if (![[NSFileManager defaultManager] fileExistsAtPath:plistPath])
{
plistPath = [[NSBundle mainBundle] pathForResource:@"manuallyData" ofType:@"plist"];
}
}
答案 2 :(得分:0)
- (IBAction)savetapped:(id)sender {
NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsPath = [paths objectAtIndex:0];
NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"json.geojson"];
[paths writeToFile:plistPath atomically:YES];
}
- (IBAction)retriveTapped:(id)sender {
NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsPath = [paths objectAtIndex:0]; NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"json.geojson"];
NSLog(@"%@",documentsPath);
if (![[NSFileManager defaultManager] fileExistsAtPath:plistPath])
{
plistPath = [[NSBundle mainBundle] pathForResource:@"json" ofType:@"geojson"];
}
NSLog(@"%@",plistPath );
}
答案 3 :(得分:0)
花了一段时间才发现我实际上并不知道你想要做什么。
pathForResource为您提供应用程序包中资源的路径。你只能从那里阅读。你永远不能写在那里。有时人们在应用程序包中拥有文件的初始版本,然后将其写入其他地方。如果那是你想要的,那么你很可能需要:
(1)编写一个方法,在应用程序运行后返回存储数组的路径。
(2)"写" method调用此路径方法以了解编写数组的位置。
(3)"阅读"方法调用此路径方法以了解读取数组的位置,然后读取它。但是,数组可能为零,因为您的应用程序是第一次运行,或者数组未正确写入。在这种情况下,您使用pathForResource来获取文件在应用程序包中的路径,并从那里读取它。