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

How to store the returning value of an NSArray.objectAtIndex to an NSString variable

我是使用 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 设置为等于返回的任何对象给我一个关于将 NSString Strong 分配给类型 'id' 的错误,我不知道 'id' 是什么。

你有一个简单的错字。这一行:

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

应该是:

word = [array objectAtIndex:r];

甚至更好:

word = array[r];

旁注:不要将 ivar 放在 .h 文件中。把它放在 .m 文件中。 public 不需要知道私人细节。

.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方法名后面的分号

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