如何将NSArray.objectAtIndex的返回值存储到NSString变量中



我是使用objective c编程的新手,过去只使用过java。我正试图编写一个快速的刽子手游戏,但我遇到了一些错误,我一生都找不到解决方案。

因此,在这个方法中,我试图从NSArray中选择一个随机单词,并将其设置为等于实例变量单词。

#import <Foundation/Foundation.h>
@interface Hangman : NSObject
{
    NSString *word;
}
-(void) randomWord;
-(void) guessLettter: (char) g;
-(void) guessWord: (NSString*) guess;
-(void) displayLetters: (char) x;
@end
#import "Hangman.h"
@implementation Hangman
-(void) randomWord;
{
NSArray *array = [NSArray arrayWithObjects:@"Mercedes", @"Banana", @"Porsche",
                  @"Dinosaur", @"Blue", @"owls", @"chicken", @"Lollipop", @"Table",
                  @"Hello", @"Corn", @"Uniform",nil];
int num = 11;
NSUInteger r = arc4random_uniform(11);
word = *[array objectAtIndex:(NSUInteger)r];

}

但是,试图将word设置为等于返回的任何对象会给我一个错误,即将NSStringStrong分配给类型"id",我不知道"id"是什么。

您有一个简单的打字错误。此行:

word = *[array objectAtIndex:(NSUInteger)r];

应该是:

word = [array objectAtIndex:r];

甚至更好:

word = array[r];

附带说明:不要将ivar放在.h文件中。把它放在.m文件中。公众不需要知道私人细节。

.h:

@interface Hangman : NSObject
-(void) randomWord;
-(void) guessLettter: (char) g;
-(void) guessWord: (NSString*) guess;
-(void) displayLetters: (char) x;
@end

.m:

#import "Hangman.h"
@implementation Hangman {
    NSString *word;
}
-(void)randomWord
{
    NSArray *array = @[@"Mercedes", @"Banana", @"Porsche",
                  @"Dinosaur", @"Blue", @"owls", @"chicken", @"Lollipop", @"Table",
                  @"Hello", @"Corn", @"Uniform"];
    NSUInteger r = arc4random_uniform(11);
    word = array[r];
}

还要去掉.m文件中randomWord方法名称后面的分号。

注意现代数组语法的使用。

最新更新