0

我在从自定义 plist 中读取时遇到问题。我在这里和其他地方找到了 Apple 文档以及许多帖子,但我不明白我做错了什么。

我的 plist 是一个包含两个字符串(url)的字典。

这是我的代码,就像 Apple 和其他网站一样:

- (void)accessPlistForURLDictionary
{
    NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsPath = [paths objectAtIndex:0];
    NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"server_urls.plist"];

    if (![[NSFileManager defaultManager] fileExistsAtPath:plistPath])
    {
        // if not in documents, get property list from main bundle
        plistPath = [[NSBundle mainBundle] pathForResource:@"server_urls" ofType:@"plist"];
        NSLog(@"bundle");
    }

    NSData *xml = [[NSFileManager defaultManager] contentsAtPath:plistPath];
    NSString *error = nil;
    NSPropertyListFormat format;
    // convert static property liost into dictionary object
    NSDictionary *plistDictionary = (NSDictionary *)[NSPropertyListSerialization propertyListFromData:xml mutabilityOption:NSPropertyListMutableContainersAndLeaves format:&format errorDescription:&error];
    if (!plistDictionary)
    {
        NSLog(@"Error reading plist: %@, format: %d", error, format);
    }

    serverURL = [[plistDictionary objectForKey:@"Root"] objectForKey:@"get_firstview"];
    NSLog(@"serverURL in accessPlist is: %@", serverURL);
}

这是日志....我不明白为什么 serverURL(合成的字符串变量)为“空”

2013-01-07 12:47:06.742 ME[2305:c07] bundle
2013-01-07 12:47:06.744 ME[2305:c07] serverURL in accessPlist is: (null)
2013-01-07 12:47:06.744 ME[2305:c07] serverURL is: (null)

最后一次检查是在我在 viewDidLoad 中使用 serverURL 之前完成的

我在构建设置中添加了 plist(我认为)。这一定是我的代码有问题,但我找不到什么。

4

1 回答 1

0

有更简单的加载plist方式NSDictionary

NSMutableDictionary *plistDictionary = [[NSMutableDictionary alloc] initWithContentsOfFile: plistPath];

试试看。

于 2013-01-07T23:16:21.823 回答