Хорошо, я пытаюсь сделать это в течение 2-3 часов, и я не совсем понимаю. Вот код и краткое объяснение:
Я пытаюсь составить два списка слов, вытащить одно слово из каждого из этих списков случайным образом и отобразить оба слова (вместе с третьим) на экране при нажатии кнопки. Вот код:
#import "Project001ViewController.h"
@implementation Project001ViewController
-(ArrayOfWords *) advs
{
if(!advs){
advs = [[ArrayOfWords alloc] init];
NSString* advpath = @"/WordLists/adverbs.txt";
NSLog(@"1");
[[self advs] populateListOfWords:advpath];
}
return advs;
}
-(ArrayOfWords *) adjs
{
if (!adjs) {
adjs = [[ArrayOfWords alloc] init];
NSString* adjpath = @"/WordLists/adjectives.txt";
[[self adjs] populateListOfWords:adjpath];
NSLog(@"2");
}
return adjs;
}
- (IBAction)generate:(UIButton *)sender;
{
//int randy = arc4random() % 11;
//NSNumber* num= [NSNumber numberWithInteger:randy];
NSString* obj = @"app";
NSString* adverb = [[self advs] randomItem];
NSString* adjective = [[self adjs] randomItem];
NSLog(@"%i %i",[adjs size],[advs size]);
NSLog(@"1 %@ %@ %@.",adverb, adjective, obj);
//NSLog(@"%@",thePhrase);
[display setText:@"Hi"];
}
@end
У меня проблемы с последней NSLog
строкой:
NSString* obj = @"app";
NSString* adverb = [[self advs] randomItem];
NSString* adjective = [[self adjs] randomItem];
NSLog(@"%i %i",[adjs size],[advs size]);
NSLog(@"1 %@ %@ %@.",adverb, adjective, obj);
Вместо получения двух случайно выбранных слов (используя arc4random()
для их получения) массив возвращает Null
. Но я знаю ДЛЯ НЕОБХОДИМОСТИ. Массивы не пусты, потому что в строке NSLog
, где я печатаю [adjs size]
и [advs size]
, я получаю правильные размеры списка слов. Я просто хочу знать, что заставляет их печатать здесь Null
.
методы populateListOfWords, randomItem и size:
- (NSArray *) populateListOfWords:(NSString *) path {
//gets the components of the file into an NSString
NSString *wordListString = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
//returns an array of all the words (uses the next line indicator '\n' to know when it's at the end of the word
NSArray* words = [wordListString componentsSeparatedByString:@"\n"];
length=(NSNumber*)([words count]);
return words;
}
-(NSString*) randomItem{
//returns random object in list
return (NSString*)[list objectAtIndex:(arc4random() % (int)length)] ;
}
-(int) size{
//returns size of list
return (int)length;
}
(Если требуется больше кода, дайте мне знать и заранее благодарим вас за любую помощь).