2010-02-24 8 views
0

Mon code compile bien, mais ne montre pas le texte de mathspractice.txtDe NSArray à UILabel

-(void)loadText 
{ 
NSBundle *bundle = [NSBundle mainBundle]; 
NSString *textFilePath = [bundle pathForResource:@"mathspractice" ofType:@"txt"]; 
NSString *fileContents = [NSString stringWithContentsOfFile:textFilePath]; 
NSArray *mathsPracticeTextArray = [[NSArray alloc] initWithArray:[fileContents componentsSeparatedByString:@" "]]; 
self.mathsPracticeText = mathsPracticeTextArray; 
[mathsPracticeTextArray release]; 
} 

et:

UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(0,100,960,40)]; 
myLabel.text = [mathsPracticeText componentsJoinedByString:@" "]; 
[myScrollView addSubview:myLabel]; 
[myLabel release]; 

quelqu'un peut me dire pourquoi?

+0

Avez-vous vérifié pour vous assurer que le texte est en cours de chargement correctement dans mathsPracticText? – kubi

+0

Qu'est-ce que mathsPractiveText? Aussi, je ne vois pas l'utilité de scinder le fichier si vous ne faites que les rejoindre plus tard. –

+0

Dupliquer: http://stackoverflow.com/questions/2327656/parsing-txt-from-array-to-uilabel –

Répondre

1

Votre problème est lié à la ligne

self.mathsPracticeText = mathsPracticeTextArray; 

Si je comprends bien mathsPracticeText est une chaîne. Puis, avec cette ligne:

myLabel.text = [mathsPracticeText componentsJoinedByString:@" "]; 

rien ne se passera parce que vous avez essayé de charger le tableau entier dans une chaîne, au lieu que vous devriez faire quelque chose comme ceci:

-(void)loadText 
{ 
NSBundle *bundle = [NSBundle mainBundle]; 
NSString *textFilePath = [bundle pathForResource:@"mathspractice" ofType:@"txt"]; 
NSString *fileContents = [NSString stringWithContentsOfFile:textFilePath]; 
mathsPracticeText = fileContents; 
[mathsPracticeTextArray release]; 
} 

et

UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(0,100,960,40)]; 
[myLabel setText:mathsPracticeText]; 
[myScrollView addSubview:myLabel]; 
[myLabel release]; 
1

Dans Cocoa Touch, il n'y a pas de +[NSString stringWithContentsOfFile:] (et sur le bureau, c'est obsolète). Vous devez utiliser stringWithContentsOfURL:encoding:error:.

Il n'y a pas d'autre erreur évidente dans votre code, mais cela ne signifie pas que tout est correct. Vous n'avez pas affiché la déclaration de mathsPracticeText, par exemple, mais je suppose que c'est un NSArray.

Vous tripotez un peu trop les tableaux dans la construction. Au lieu de construire un second réseau de [fileContents componentsSeparatedByString:@" "] que vous relâchez plus tard, vous pouvez simplement utiliser celui qui est retourné de componentsSeparatedByString:

-(void)loadText 
{ 
    NSString *textFilePath = [[NSBundle mainBundle] pathForResource:@"mathspractice" ofType:@"txt"]; 
    NSString *fileContents = [NSString stringWithContentsOfFile:textFilePath 
                 encoding:NSUTF8StringEncoding 
                  error:NULL]; 
    self.mathsPracticeText = [fileContents componentsSeparatedByString:@" "]; 
}