仅在首次运行ios时执行功能

Eld*_*ose 23 xcode objective-c ios

我有没有办法只运行一次功能(当应用程序更新或安装时)?我不能使用运行脚本,因为我应该使用目标c函数.

Bhu*_*dra 44

    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];

    if ( ![userDefaults valueForKey:@"version"] )
    {
            // CALL your Function;

            // Adding version number to NSUserDefaults for first version:
          [userDefaults setFloat:[[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"] floatValue] forKey:@"version"];    
    }


    if ([[NSUserDefaults standardUserDefaults] floatForKey:@"version"] == [[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"] floatValue] )
    {
    /// Same Version so dont run the function
    }
    else
    {
       // Call Your Function;

       // Update version number to NSUserDefaults for other versions:
         [userDefaults setFloat:[[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"] floatValue] forKey:@"version"];
    }
Run Code Online (Sandbox Code Playgroud)


Les*_*ter 7

这是Bhupendra答案的Swift转换:

let infoDictionary: NSDictionary? = NSBundle.mainBundle().infoDictionary // Fetch info.plist as a Dictionary
let temp: NSString = infoDictionary?.objectForKey("CFBundleVersion") as NSString
let val: Float = temp.floatValue

var userDefaults = NSUserDefaults()
if userDefaults.valueForKey("version") == nil {            
    // Call function
    // Adding version number to NSUserDefaults for first version
    userDefaults.setFloat(val, forKey: "version")
}

if NSUserDefaults().floatForKey("version") == val {
    // Same Version so dont run the function
} else {    
    // Call function
    // Update version number to NSUserDefaults for other versions
    userDefaults.setFloat(val, forKey: "version")
}
Run Code Online (Sandbox Code Playgroud)