Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone NSUserDefaults为空_Iphone_Nsuserdefaults - Fatal编程技术网

Iphone NSUserDefaults为空

Iphone NSUserDefaults为空,iphone,nsuserdefaults,Iphone,Nsuserdefaults,我试图将一些数据保存在UIApplicationDelegate中的application:openURL:sourceApplication:annotation:method的NSUserDefaults中,然后在我的主视图控制器中的viewDidLoad:中读取这些数据。但是,数据总是空的 如果我在主视图控制器的viewDidLoad:中保存相同的数据,它将立即可见并可恢复,但在UIApplicationLegate中保存数据时却不是这样 你知道这种行为吗?多谢各位 代码如下: - (BO

我试图将一些数据保存在UIApplicationDelegate中的application:openURL:sourceApplication:annotation:method的NSUserDefaults中,然后在我的主视图控制器中的viewDidLoad:中读取这些数据。但是,数据总是空的

如果我在主视图控制器的viewDidLoad:中保存相同的数据,它将立即可见并可恢复,但在UIApplicationLegate中保存数据时却不是这样

你知道这种行为吗?多谢各位

代码如下:

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
    {
        // Save my data
        [[NSUserDefaults standardUserDefaults] setURL:url forKey:@"url"];
        [[NSUserDefaults standardUserDefaults] synchronize];
        return YES;
    }

- (void)viewDidLoad
    {
        [super viewDidLoad];

    // It's always false !! 
        if ([[NSUserDefaults standardUserDefaults] URLforKey:@"url"] != nil){
        // Do something with url
        }
}

在代码中,您已在NSUserDefault中编程NSUrl。尝试使用NSString。(即[NSString stringWithFormat:@“%@”,url])

所以它应该是
[[NSUserDefaults standardUserDefaults]setValue:[NSString stringWithFormat:@“%@”,url]forKey:@“url”];

最后,问题是viewDidLoad:在我的主视图中,控制器在application:openURL:sourceApplication:annotation:之前被调用,因此还没有存储任何值

我必须在其他地方检查NSUserDefault


谢谢你们的帮助

检查委托是否正在调用
-(BOOL)application:(UIApplication*)application openURL:(NSURL*)url sourceApplication:(NSString*)sourceApplication annotation:(id)annotation
。仅当使用URL架构启动该委托时,才会调用该委托。@Till。没有。我已经对这个问题发表了评论。我在问他实现的委托是否正在调用。是否调用过保存?添加一个NSLog。是的,它正在调用该方法。如果我运行两次应用程序,那么它会工作,因为“url”键已正确保存。。。为什么主视图控制器第一次看不到此键?感谢您的时间。调用该方法是有原因的。如果它是针对
NSStrings
的,那么它将被称为
setString:forKey:
ohh!对不起。我想写setvalue。现在我已经编辑了我的答案。@Foram
setURL:
不是
NSString
,而是
NSURL
。在回答问题之前,请确认这种奇怪的行为是因为我没有使用故事板,我创建了自己的nib文件,从UIApplication委托以错误的方式加载它们。