Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何获取plist文件的目录?_Ios_Plist - Fatal编程技术网

Ios 如何获取plist文件的目录?

Ios 如何获取plist文件的目录?,ios,plist,Ios,Plist,我已经在我的项目中创建了一个plist文件。现在我想在应用程序中保存日期并从中读取。为了做到这一点,我需要得到它的位置和目录。这可能吗?因为您不仅要从文件中读取数据,还要写入数据,所以需要将该文件复制到Documents目录中。可以这样做: NSFileManager *fileManger=[NSFileManager defaultManager]; NSError *error; NSArray *pathsArray = NSSearchPathForDirectoriesInDoma

我已经在我的项目中创建了一个plist文件。现在我想在应用程序中保存日期并从中读取。为了做到这一点,我需要得到它的位置和目录。这可能吗?

因为您不仅要从文件中读取数据,还要写入数据,所以需要将该文件复制到Documents目录中。可以这样做:

NSFileManager *fileManger=[NSFileManager defaultManager];
NSError *error; 
NSArray *pathsArray = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);

NSString *doumentDirectoryPath=[pathsArray objectAtIndex:0];

NSString *destinationPath= [doumentDirectoryPath stringByAppendingPathComponent:@"myDictionary.plist"];


if ([fileManger fileExistsAtPath:destinationPath]){

return;
}
 NSString *sourcePath=[[[NSBundle mainBundle] resourcePath]stringByAppendingPathComponent:@"myDictionary.plist"];

 [fileManger copyItemAtPath:sourcePath toPath:destinationPath error:&error];
您应该在应用程序启动时调用此代码。现在您可以获取plist并将其转换为字典:

 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
  NSString *documentsDirectory = [paths objectAtIndex:0];
  NSString *filename = [documentsDirectory stringByAppendingPathComponent:[@"myDictionary" stringByAppendingPathExtension:@"plist"]];
  NSMutableDictionary *plistDict;
if ([[NSFileManager defaultManager] fileExistsAtPath:filename]) {
    plistDict = [[NSMutableDictionary alloc] initWithContentsOfFile:filePath];
} 
如果您希望立即写信给它,您需要执行以下操作:

[plistDict setValue:@"value" forKey:@"key"];

BOOL didWriteToFile = [plistDict writeToFile:filename atomically:YES];
if (didWriteToFile) {
    NSLog(@"Did Write!");
} else {
    NSLog(@"Didn't write!");
}

字典文件?那是什么?也许是plist文件?是的,我是说plist。我纠正了它。感谢应用程序中的项目(构建时)或应用程序(运行时)。在运行应用程序并实际使用它时。(它应该包含用户收藏夹的列表)你需要什么样的对象来表示文件?我不理解第一部分。第二部分和第三部分是有意义的(即使我得到了didnotwrite消息!)第一部分是必需的,因为您想要更改文件的内容。您的初始plist文件位于应用程序的捆绑包中,该捆绑包是只读的,因此您需要将其复制到Documents目录中。否则你就不会写了你不能写但是你能得到文件吗?你成功获得它了吗?是的,我想这是因为我没有包括第一部分。这很奇怪,但当我把第一部分和第二部分放在viewdidload的Begining中时,它无法启动视图。我刚得到一个白色屏幕!