在 NSDictionary 中编辑 plist
Posted
技术标签:
【中文标题】在 NSDictionary 中编辑 plist【英文标题】:Editing a plist in NSDictionary 【发布时间】:2011-09-22 02:45:39 【问题描述】:我正在将一个 plist 导入到一个 NSDictionary 对象中,并且想将字典中的 plist 的内容更改为小写。我尝试了几种不同的方法,但都没有运气。也许我应该编辑 NSDictionary 中的字符串,但是我不知道该怎么做。
我目前正确导入 plist,但 lowercaseString 行实际上什么都不做。
NSString *contents = [[NSBundle mainBundle] pathForResource:@"Assets/test" ofType:@"plist"];
NSString *newContents = [contents lowercaseString];
NSDictionary *someDic = [NSDictionary dictionaryWithContentsOfFile:newContents];
for (NSString *someData in someDic)
NSLog(@"%@ relates to %@", someData, [someDic objectForKey:someData]);
我 NSLog'd 的“内容”字符串,它给了我一个路径值,所以显然将其更改为小写字符串不会做任何事情。我觉得我必须访问字典中的字符串。
【问题讨论】:
【参考方案1】:这一行
NSString *newContents = [contents lowercaseString];
是改变返回的路径字符串
NSString *contents = [[NSBundle mainBundle] pathForResource:@"Assets/test" ofType:@"plist"];
所以你最终会得到类似 ../assets/test.plist 的东西
您需要浏览 someDic 的内容,并根据旧的将字符串转换为小写字母创建一个新字典,如果您只关心 someDic 中的值,您可以执行类似的操作
for( NSString * theKey in someDic )
id theObj = [someDic objectForKey:theKey];
if( [theObj isKindOfClass:[NSString class]] )
theObj = [theObj lowercaseString];
[theNewDict setObject:theObj forKey:theKey];
【讨论】:
我想你会使用 dictionaryWithDictionary 来处理第一个字典的属性,但是我如何定位其中的字符串以将它们设置为小写? 不只是动态创建新字典,无论如何你都要替换新条目。 我必须手动替换每个条目吗?如果某些条目是包含数组和字符串的字典怎么办?我只是不确定我会如何做到这一点,也找不到类似的东西。 您将不得不递归地执行此操作,创建两个函数或方法,一个接受 NSArray 并返回小写版本,另一个接受 NSDictionary 并返回小写版本,在这些函数中,当每当您找到一个数组或字典时,都会使用该字典或数组调用数组或字典函数,并将结果插入到您正在创建的数组或字典中。 感谢您的帮助!哈哈,我会回来回答你的。以上是关于在 NSDictionary 中编辑 plist的主要内容,如果未能解决你的问题,请参考以下文章
从 CoreData 在 NSDictionary 中制作嵌套 JSON
使用 NSDictionary 内容创建 NSManagedObject
NSDictionary - 将相同的 id'ed 元素堆叠到另一个字典中