2011-06-17 9 views
0

CFBundleVersion変数(NSString)をfloatに変更する方法はありますか?iOS CFBundleVersion to float

私のバージョンは現在 '1.0.2'ですが、floatValueを解析すると1.00000が返されます。 1.02000

ありがとう:私は、この値を取得しますそれを解析する方法

+0

は、なぜあなたはこれをしたいですか? – Bemmu

+0

私のアプリが最後に起動されてから更新されたかどうかを知りたい。 –

+0

ダウングレードしないので、同等性のチェックで十分です。 – Eiko

答えて

1

これはできません。 2つの小数点があり、それを浮動小数点として表現する明白な方法はありません。 何かに変換する独自のコードをロールするかもしれませんが、基本的にはそのようなアプローチには欠陥があります。

1

はこれを試してください: -

CGFloat versionNumber; 

    NSArray *versionItems = [[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"] componentsSeparatedByString:@"."]; 

    if (versionItems.count == 3) 
    { 
     NSInteger major = [[versionItems objectAtIndex:0] integerValue]; 
     NSInteger minor = [[versionItems objectAtIndex:1] integerValue]; 
     NSInteger bug = [[versionItems objectAtIndex:2] integerValue]; 

     versionNumber = [[NSString stringWithFormat:@"%ld.%ld%ld",(long)major,(long)minor,(long)bug] floatValue]; 
    } 
    else 
    { 
     versionNumber = [[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"] floatValue]; 
    }