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

时间:2015-11-20 03:19:19

标签: objective-c class nsstring nsarray

我是使用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];


}

但是尝试设置等于返回任何对象的单词给我一个关于将NSString Strong分配给'id'的错误,我不知道'id'是什么。

1 个答案:

答案 0 :(得分:1)

你有一个简单的拼写错误。这一行:

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

注意使用现代数组语法。