を機能を実行しますか?私は目的のC関数を使用する必要があるので、私は実行スクリプトを使用することはできません。は(アプリが更新またはインストールされている場合)、私は一度だけの機能を実行できることにより、どのような方法がありますのみ、最初の実行IOSで
答えて
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"];
}
NSUserDefaults
にBOOL値のキー(例:isFirstLaunch = NO
)を作成し、その機能を実行した後にYESに設定できます。
ユーザーがアプリケーションを起動するたびに実行する場合は、Appが存在する前にそのキーをデフォルト値に設定する必要があります(AppDelegateの-applicationWillTerminate:
メソッドでリセットする)。
アプリがあるときに最初にインストールしたり、すべての更新の後のいずれかのいくつかのコードを実行したい場合、あなたはあなたのバンドルから
CGFloat currentVersion = [[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"] floatValue];
を、アプリケーションの現在のバージョンを読んで、あなたの後にユーザデフォルトにそれを書くことができますコードを実行しました。
[[NSUserDefaults standardUserDefaults] setFloat:currentVersion
forKey:kLastVersionThatExecutedMyCodeKey];
次回にアプリケーションを起動するときに、ユーザーのデフォルトの値とバンドルのバージョンを比較します。バンドルのバージョンが変更された場合はアプリでは、コードを再度実行して、ユーザーのデフォルトに新しいバージョンを書く必要があることを意味して更新されました。
は、(引用符がありません)であるべき - > [[NSUserDefaults standardUserDefaults] setFloat:CurrentVersionの forKey:@ "kLastVersionThatExecutedMyCodeKey"];小さな 'K 'と変数名にプレフィックス – mikemike396
@ Pyraego.comは、それが一定であることを示すために、一般的な慣例です。 Appleのフレームワークは多くの場所でそれを使用しています。 'kLastVersionThatExecutedMyCodeKey'は変数ではなく、文字列そのものであると考えられます。 –
興味深いです!知っておいてよかった。混乱させて申し訳ありません。あなたは歓迎:) – mikemike396
これはBhupendra's answerのスウィフト変換です:
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")
}
誰がそれを必要とする場合、これは、Bhupendraの回答のSwift2.0バージョンです!
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
let userDefaults = NSUserDefaults()
if userDefaults.valueForKey("version") == nil {
userDefaults.setFloat(val, forKey: "version")
}
if NSUserDefaults().floatForKey("version") == val {
//if it is the same version, don't run the code
}
else {
userDefaults.setFloat(val, forKey: "version")
}
}
おかげBhupendra – Eldhose
は、私は、ユーザーのドキュメントストアにplistの設定ファイルを記述しようとしていた、あなたの方法は、 – Bhupendra
割れもの@Bhupendraある – MagicalArmchair