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
Ios 如何在objective-c中为每个用户在其整个生命周期中只运行一次代码_Ios_Iphone_Objective C_Nsuserdefaults - Fatal编程技术网

Ios 如何在objective-c中为每个用户在其整个生命周期中只运行一次代码

Ios 如何在objective-c中为每个用户在其整个生命周期中只运行一次代码,ios,iphone,objective-c,nsuserdefaults,Ios,Iphone,Objective C,Nsuserdefaults,有没有办法只运行一次代码?不是每次使用都可以。当用户下载并运行应用程序时,代码将只运行一次,不再运行 我试图创建一个初始值为0的整数,并将其保存到nsuerdefaults 在if语句中检查这个特殊的代码,如果它为0,则输入代码,如果它不是0,则不输入代码,在if语句中,我增加了0并保存了它,这样它就不会再输入它 但是没有成功 NSInteger temp = [[NSUserDefaults standardUserDefaults] integerForKey:@"forOnce"];

有没有办法只运行一次代码?不是每次使用都可以。当用户下载并运行应用程序时,代码将只运行一次,不再运行

我试图创建一个初始值为0的整数,并将其保存到nsuerdefaults

在if语句中检查这个特殊的代码,如果它为0,则输入代码,如果它不是0,则不输入代码,在if语句中,我增加了0并保存了它,这样它就不会再输入它

但是没有成功

 NSInteger temp = [[NSUserDefaults standardUserDefaults] integerForKey:@"forOnce"];


if (temp==0) {

int k=0;

if (NSClassFromString(@"CTTelephonyNetworkInfo"))
{

CTTelephonyNetworkInfo *netInfo =[[CTTelephonyNetworkInfo alloc]init];
CTCarrier *carrier =[netInfo subscriberCellularProvider];


testUser[@"Carrier"]=[carrier carrierName];
//NSLog(@"carrier bu %@",[carrier carrierName]);




 }

    temp++;


    [[NSUserDefaults standardUserDefaults] setInteger:k forKey:@"forOnce"];
    [[NSUserDefaults standardUserDefaults] synchronize];

    }
代码是这样的

if(![[NSUserDefaults standardUserDefaults] boolForKey:@"EXECUTE_ALREADY"])
{
        NSLog(@"ONCE");
        [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"EXECUTE_ALREADY"];
        [[NSUserDefaults standardUserDefaults] synchronize];
}

基本想法和你的一样。它可以工作。

Temp==0,当您第一次加载它时。所以你必须把k=1(而不是k=0)。因为当您在“用户默认设置”中保存k=0时,您将在下一次的Temp中再次将其检索为0。如果用户更改了设备并将应用程序重新安装到新设备上,该怎么办D@Zhang哈哈,这可能是因为有点误传:)@PaintedBlack我不太明白你想告诉我什么他的if()条件正在检查诱惑,但他正在将“k”保存到NSUserDefaults中,诱惑将始终为0,条件始终为真。我认为他需要将诱惑存储到NSUserDefaults而不是“k”中。好吧,它可以工作,但代码从未运行过,我得到了3个测试设备,在第一次运行之后,它从NSUserDefaults中获得了保存
Try this method in AppDelegate.h

@property(nonatomic,assign)BOOL isFirst;


     - (BOOL) isFirstRun
    {
        Defaults = [NSUserDefaults standardUserDefaults];
        if ([Defaults objectForKey:@"isFirstRun"])
        {
            //if application running in second time
            isFirst=NO;
             NSLog(@"isSecondRun isfirst:%d",isFirst);
            return NO;
        }
        //if application running in first time
        isFirst=YES;
        NSLog(@"isFirstRun isfirst:%d",isFirst);

        [Defaults setObject:[NSDate date] forKey:@"isFirstRun"];
        [[NSUserDefaults standardUserDefaults] synchronize];

        return YES;
    }



and check 

NSLog(@"isfirst:%d",[self isFirstRun]);

if(isFirst==1)
{
//Do your operations.
}