2013-12-09 4 views
0

Так что я хочу напечатать пользователей в NSMutableArray. Но струны продолжают появляться как ноль.Печать от NSMutableArray

вот что у меня есть:

int users = 0; 

- (IBAction)addNewUser:(id)sender { 

    NSString *string; 
    string = userNameTextField.text; 
    [usernameArray insertObject:string atIndex:users]; 
    users++; 
    [self showUsers]; 
} 
-(void)showUsers{ 
    for (int i = 0; i < users; i++){ 
     NSString *s = textView.text; 
     NSString *add; 
     add = [NSString stringWithFormat:@"%@ ",[usernameArray objectAtIndex:i]]; 
     NSString *display = [NSString stringWithFormat:@"%@ \n %@", s, add]; 
     textView.text = display; 
    } 
} 

я также попытался

-(void)showUsers{ 
    for (int i = 1; i < users; i++){ 
     NSString *s = textView.text; 
     NSString *add; 
     add = [usernameArray objectAtIndex:i]; 
     NSString *display = [NSString stringWithFormat:@"%@ \n %@", s, add]; 
     textView.text = display; 
    } 
} 
+0

Вы подтвердили, что 'textView' и' usernameArray' не 'nil'? – rmaddy

+0

Как я могу проверить, нет ли usernameArray? – nfoggia

+0

Используйте отладчик и добавьте инструкцию 'NSLog'. – rmaddy

ответ

0

Прежде всего попробуйте использовать более полные имена для объектов. Я переписываю ваш код. Общие причины Причины для проблемы: массив не инициализирован, вы начинаете для цикла с int i равным 1, поэтому вам не хватает объекта по индексу 0 в вашем изменяемом массиве. Попробуйте следующий код.

@interface InterfaceName : InterfaceInherits <IfDelegate> { 
int usersCount; 
NSMutableArray * usernameArray; 

} 

@implementation InterfaceName 
/*There's no more confident way to initialize a variable than in the init method of the class. */ 
-(id)init{ 
usersCount = 0; 
//You have to be sure that your array is not nil 
usernameArray = [NSMutableArray alloc]init]]; 
return self; 
} 
- (IBAction)addNewUser:(id)sender { 
NSString *username = [usernameTextField text]; 
[usernameArray insertObject:username atIndex:usersCount]; 
usersCount++; 

//I'll omit the display as I'm not sure what you were doing with it. 
} 
-(void)showUsers{ 
for (int i = 0; i < usersCount; i++){ 
    NSString *retrievedUser = [usernameArray objectAtIndex:i]; 
    NSString *display = [NSString stringWithFormat:@"User Retrieved : %@",retrievedUser]; 
    textView.text = display; 
} 
} 


    @end 
Смежные вопросы