Ios 从用户文档而不是NSBundle访问Plist

Ios 从用户文档而不是NSBundle访问Plist,ios,objective-c,xcode,plist,nsbundle,Ios,Objective C,Xcode,Plist,Nsbundle,您好,我有下面的代码,它可以很好地工作,它找到Plist并将NSDictionary分配给我的NSArray名为landingSites。唯一的问题是我希望用户能够添加站点,因此需要在用户文档中存储Plist,而不是NSBundle: plistPath = [[NSBundle mainBundle] pathForResource:@"Data" ofType:@"plist"]; NSMutableDictionary *newDictionary = [[NSMutableDiction

您好,我有下面的代码,它可以很好地工作,它找到Plist并将
NSDictionary
分配给我的
NSArray
名为landingSites。唯一的问题是我希望用户能够添加站点,因此需要在用户文档中存储Plist,而不是
NSBundle

plistPath = [[NSBundle mainBundle] pathForResource:@"Data" ofType:@"plist"];
NSMutableDictionary *newDictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];
dictionaryKeys = [newDictionary allKeys];
self.landingSites = [dictionaryKeys sortedArrayUsingSelector:@selector(compare:)];
self.dictionaryFromPlist = newDictionary;

[Picker selectRow:0 inComponent:0 animated:NO];

for(NSString *parent in dictionaryKeys) 
{
    NSDictionary *parentData = [dictionaryFromPlist objectForKey:parent];
    NSArray *child = [parentData objectForKey:@"Name"];
    NSLog(@"%@", child);
}
到目前为止,我已经生成了下面的代码,但是每当我运行程序时,if语句总是像plist in从未复制到用户文档一样执行。此外,我不知道如何像上面那样将
NSDictionary
内容附加到我的登陆站点数组。请帮忙

 (void) viewDidLoad {
        [super viewDidLoad];
        NSError *error;
        NSArray *paths =NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory,  NSUserDomainMask,YES);
        NSString *documentsDirectory = [paths objectAtIndex:0];
        NSString *path = [documentsDirectory stringByAppendingPathComponent:@"Data.plist"];
        NSFileManager *fileManager = [NSFileManager defaultManager];

        if (![fileManager fileExistsAtPath:path]) {
            NSLog(@"copying database to users documents");
            NSString *pathToSettingsBundle = [[NSBundle mainBundle] pathForResource:@"Data" ofType:@"plist"];
            [fileManager copyItemAtPath:pathToSettingsBundle toPath:path error:&error];
        }
        else{
            NSLog(@"users database already configured");
        }
NSDocumentationDirectory
错误。您正在查找
NSDocumentDirectory
NSLibraryDirectory

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

您是否已检查
文档
目录中是否不存在
Data.plist
?如果
fileExistsAtPath:
返回
YES
,那么这是有原因的。谢谢@Putz1103,一定是输入错误,代码现在可以工作了。最后,请你回答我问题的后半部分。如何像我在使用NSBundle的第一个代码块中所做的那样,将NSDictionary的内容输入到我的着陆站点NSArray中?如果它是完全相同的文件(至少是类型),则以完全相同的方式输入。从bundle读取plist文件和从另一个目录读取plist文件的方式完全相同。
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];