Xcode4.5のアプリケーションがあります。私のアプリケーションでは、ユーザーはFacebookのウォールに投稿できます。各投稿は、変数タイプ'id'の一意の投稿識別番号を返します。私のアプリの目的のために、この投稿ID番号を取得し、再フォーマットする必要があります。投稿IDの一般的な形式は「12345_678910」です(引用符は形式の一部です)。私がする必要があるのは、投稿IDの一部のみを含む新しい文字列を作成することです。具体的には(この例から)678910だけです。つまり、アンダーバーの後と最後の引用符の前のすべてです。
奇妙な部分は次のとおりです。実際の投稿IDと同じタイプの形式でNSStringの形式で偽の投稿IDを作成すると、その偽の投稿IDをフォーマットして、必要なものを正確に取得できます。しかし、実際の投稿IDである「id」型変数で同じコードを実行すると、異なる結果が得られます。以下の例を参照してください。
//result is the post id of type 'id' (the console displays it as "12345_67890")
NSString *resultString = [NSString stringWithFormat:@"%@",result];
NSArray *resultComponents = [resultString componentsSeparatedByString:@"_"];
NSString *remainingString = [resultComponents lastObject]; //this works
NSString *finalString = [remainingString substringToIndex:[remainingString
length]-1]; //this doesn't work
[DataController dc].postIDData = finalString;
NSLog(@"%@",[DataController dc].postIDData); //the console reads 67890"
}
したがって、上記のコードは、アンダーバー(私が欲しい)の後の数字の部分を生成しますが、それでも引用符が含まれています!NSString型の偽の結果文字列でこれと同じコードを使用すると、67890しか得られません。また、NSLogを実行して「resultString」[resultStringの長さ]の文字数をカウントすると、物理的に数える文字数よりも大きな値が得られます。私はここで何が起こっているのか本当に理解しておらず、それを修正する方法もわかりません。どんな助けでも大歓迎です。