3

试图做一些非常简单的事情,但无法弄清楚语法。

我有一个名为 Word.h 的类,它有 8 个属性、字符串和整数。为了简单起见,我将在这里坚持使用 2:

#import <UIKit/UIKit.h>
@interface Word : NSObject
@property (nonatomic, strong) NSString *word; 
@property (nonatomic, strong) NSNumber *wordLevel;
@end

这两个属性都在 .m 文件中合成

然后我想在另一个文件(UIViewController)中创建一些对象。在 .h 文件中,我有这个:

#import "Word.h"

在 .m 文件中,这是:

Word *newWord = [[Word alloc] init];
   [newWord setWord:@"theorise"];
   [newWord setWordLevel:6];

Word *newWord1 = [[Word alloc] init];
   [newWord setWord:@"implicit"];
   [newWord setWordLevel:7];

Word *newWord2 = [[Word alloc] init];
   [newWord setWord:@"incredible"];
   [newWord setWordLevel:9];

我现在收到一条错误消息“ARC 不允许将 'int' 隐式转换为 'NSNumber *'”

我在做什么错......类文件中的属性定义不正确?我如何访问此属性。它适用于字符串。

我还想稍后访问这些属性 - 我该怎么做......例如:

cell.label1.text = [newWord2 wordLevel];

这是正确的语法吗???

希望有人可以帮助我,在这里撕掉一团团的头发!米

4

1 回答 1

2

你声明wordLevel是一个NSNumber,一个对象。您在代码中将其视为普通的 C int。你必须决定你想要它是什么,并始终如一地对待它。例如,对于一个普通的 Cint属性,您将改为声明:

@property (nonatomic, assign) int wordLevel;

另一方面,如果你真的想wordLevel成为一个,NSNumber你需要像这样使用 setter:

[newWord setWordLevel:[NSNumber numberWithInt:6]];
于 2012-07-21T22:34:05.263 回答