7

NSString私のアプリケーションには、を含むが渡されますunsigned int。NSString にはメソッドがありません[myString unsignedIntegerValue];。文字列を壊さずに文字列から値を取り出して、NSNumber. 私はそれを次のようにしようとしています:

NSString     *myUnsignedIntString = [self someMethodReturningAString];
NSInteger    myInteger            = [myUnsignedIntString integerValue];
NSNumber     *myNSNumber          = [NSNumber numberWithInteger:myInteger];

// ...put |myNumber| in an NSDictionary, time passes, pull it out later on...

unsigned int myUnsignedInt        = [myNSNumber unsignedIntValue];

unsigned int上記は、最初に変換する必要があったため、ラージの最後を「切り取る」可能性がありNSIntegerますか? それとも使いやすそうですか?端っこを切るなら、以下はいかがでしょうか(ちょっと大袈裟だと思いますが)。

NSString     *myUnsignedIntString = [self someMethodReturningAString];
long long    myLongLong           = [myUnsignedIntString longLongValue];
NSNumber     *myNSNumber          = [NSNumber numberWithLongLong:myLongLong];

// ...put |myNumber| in an NSDictionary, time passes, pull it out later on...

unsigned int myUnsignedInt        = [myNSNumber unsignedIntValue];

ご協力いただきありがとうございます。:)

4

1 に答える 1

8

最初のバージョンは切り捨てられ、2番目のバージョンは、数値が実際にunsigned intに収まる限り問題ありません。たとえば、「データ型のサイズと配置」を参照してください。ただし、 usingを
作成する必要があります。NSNumber+numberWithUnsignedInt

エンコーディングが適切であることがわかっている場合は、Cライブラリを使用することもできます。

unsigned n;
sscanf([str UTF8String], "%u", &n);
于 2010-05-13T03:25:01.600 に答える