我是IOS编程的新手,正在尝试修改开发人员为我编写的一些代码。我在以下代码中遇到问题
NSUserDefaults *pref=[NSUserDefaults standardUserDefaults];
NSString *strUrl=[pref valueForKey:@"HistoryUrl"];
if (strUrl.length>0)
{
newUrl=strUrl;
}
else
{
newUrl=@"http://www.google.com";
}
HistoryUrl参数似乎在其中存储了值'http://www.yahoo.com'。我到处寻找并搜索了有关如何将此值替换为Google地址的网络。我什至遍历了XCode中的所有代码,找不到在哪里声明了historyurl:
提前致谢!
最佳答案
@“HistoryUrl”是包含字符串HistoryURL的NSString *。这就是您使用固定数据编写NSString *的方式。
pref是代表用户首选项的对象。
用户的首选项包含多个键值对。例如,可能有一个名为“HistoryUrl”的键,可能具有某些值。
valueForKey:方法读取存储在键“HistoryUrl”下的值,并将其存储到strUrl中。如果没有名为“HistoryUrl”的键,则结果为nil。 (对valueForKey:的使用很奇怪,因为它不是NSUserDefaults本身的一种方法;通常会使用objectForKey:)
下面的代码检查读取的值中是否包含任何字符(长度大致上是字符数);如果有任何字符,则将newUrl设置为该值;如果没有字符,则将newUrl设置为NSString *“http:/www.google.com”。
因此,有时某人已将名称“HistoryUrl”下的值存储到应用程序的首选项文件中。您可以通过调用删除该值
[首选removeObjectForKey:@“HistoryUrl”]
或者,由于您似乎除了“google”之外什么都不想要,因此删除所有代码,然后编写NSString * newUrl = @“http://www.google.com”即可。
关于ios - NSUserDefaults中的Valueforkey,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21786101/