我是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”是包含字符串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/

    10-12 05:36