Вот другой подход. Это создает массив, элементами которого являются отдельные цифры (и предшествующий «-», если отрицательный):
#import <Foundation/Foundation.h>
NSArray* brokenArrayWithInt(NSInteger intOne) {
NSMutableArray *result = [[[NSMutableArray alloc] init] autorelease];
BOOL isNegative = NO;
if (intOne < 0) {
isNegative = YES;
intOne = -intOne;
}
do {
[result insertObject:[NSNumber numberWithInteger:intOne % 10] atIndex:0];
intOne /= 10;
} while (intOne > 0);
if (isNegative) {
[result insertObject:@"-" atIndex:0];
}
return result;
}
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSArray *brokenArray = brokenArrayWithInt(2734465);
NSLog(@"Array: %@", brokenArray);
brokenArray = brokenArrayWithInt(-2734465);
NSLog(@"Array: %@", brokenArray);
brokenArray = brokenArrayWithInt(0);
NSLog(@"Array: %@", brokenArray);
[pool drain];
return 0;
}
Вот результат:
Running…
2011-09-21 12:28:52.531 so7505138[6739:a0f] Array: (
2,
7,
3,
4,
4,
6,
5
)
2011-09-21 12:28:52.533 so7505138[6739:a0f] Array: (
"-",
2,
7,
3,
4,
4,
6,
5
)
2011-09-21 12:28:52.533 so7505138[6739:a0f] Array: (
0
)