Здравейте Опитвам се да конвертирате низ в int масив в обектив C нейното изпълнение добре в xcode, но дайте някаква грешка в редактора http://ideone.com
Имам вход като = {1,2,3,4,5} и искам да го преобразувам в int масив или NSARRAY във и отпечатвам ....
#import <Foundation/Foundation.h>
NSArray* sampleMethod(NSString*val){
NSString *stringWithoutbracketstart = [val stringByReplacingOccurrencesOfString:@"{" withString:@""];
NSString *stringWithoutbracketend = [stringWithoutbracketstart
stringByReplacingOccurrencesOfString:@"}" withString:@""];
NSLog(@"%@",stringWithoutbracketend);
NSArray *items=[[NSArray alloc]init];
items = [stringWithoutbracketend componentsSeparatedByString:@","];
//NSLog(@"%@",items);
return items;
}
int main(int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSString *value =@"{1,2,3}";
NSArray* ip1= sampleMethod(value);
NSLog(@"%@",ip1);
[pool drain];
return 0;
}
Отговори:
1 за отговор № 1Защо да не направите входния низ валиден JSON и след това той може да бъде произволно разширен с малко кодиране усилия (никакво усилие по отношение на разбора):
int main(int argc, const char **argv)
{
int retval = 0;
@autoreleasepool {
if (argc == 2) {
NSString *str = @(argv[1]);
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
NSError *error = nil;
NSArray *array = [NSJSONSerialization JSONObjectWithData:data
options:0
error:&error];
if ([array isKindOfClass:[NSArray class]]) {
// Done
} else if (!array) {
NSLog(@"Input data is invalid: %@", [error localizedDescription]);
retval = 2;
} else {
NSLog(@"Input data is invalid");
retval = 3;
}
} else {
NSLog(@"Provide a JSON-list");
retval = 1;
}
}
return retval;
}
Това означава, че ще трябва да предоставите списъка във формат JSON:
$ ./myprog "[ 1, 2, 3 ]"
(цитати са необходими)
-2 за отговор № 2
Намерих лесно решението с помощта на вашите съвети ....
#import <Foundation/Foundation.h>
NSArray*sampleMethod(NSString*val){
NSString *newStr = [val substringFromIndex:1];
NSString *newStr1 = [newStr substringToIndex:[newStr length]-1];
NSArray *yourWords = [newStr1 componentsSeparatedByString:@","];
return yourWords;
}
int main(int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSString *value =@"{1,2,3}";
NSArray* ip1= sampleMethod(value);
NSLog(@"%@",ip1);
[pool drain];
return 0;
}