如何将 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
方法名后面的分号
并注意现代数组语法的使用。
我是使用 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
方法名后面的分号
并注意现代数组语法的使用。