我是使用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'是什么。
答案 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
方法名称后面的分号。
注意使用现代数组语法。