От NSArray к UILabel - PullRequest
       21

От NSArray к UILabel

0 голосов
/ 24 февраля 2010

Мой код компилируется нормально, но не показывает текст из mathspractice.txt

-(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];
}

и

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

Может кто-нибудь сказать мне, почему?

Ответы [ 2 ]

1 голос
/ 24 февраля 2010

В Cocoa Touch нет +[NSString stringWithContentsOfFile:] (а на рабочем столе это устарело). Вы должны использовать stringWithContentsOfURL:encoding:error:.

В вашем коде нет очевидных других ошибок, но это не значит, что все правильно. Например, вы не опубликовали объявление mathsPracticeText, но я предполагаю, что это NSArray.

Вы слишком много возитесь с массивами в строительстве. Вместо создания второго массива из [fileContents componentsSeparatedByString:@" "], который вы позже освободите, вы можете просто использовать тот, который был возвращен из componentsSeparatedByString:

-(void)loadText
{
    NSString *textFilePath = [[NSBundle mainBundle] pathForResource:@"mathspractice" ofType:@"txt"];
    NSString *fileContents = [NSString stringWithContentsOfFile:textFilePath
                                                       encoding:NSUTF8StringEncoding
                                                          error:NULL];
    self.mathsPracticeText = [fileContents componentsSeparatedByString:@" "];
}
1 голос
/ 24 февраля 2010

Ваша проблема связана с линией

self.mathsPracticeText = mathsPracticeTextArray;

Если я правильно понимаю, mathsPracticeText - это строка. Тогда с этой строкой:

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

ничего не произойдет, потому что вы пытались загрузить весь массив в строку, вместо этого вы должны сделать что-то более похожее на:

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

и

 UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(0,100,960,40)];
 [myLabel setText:mathsPracticeText];
 [myScrollView addSubview:myLabel];
 [myLabel release];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...