3

本当に簡単なことをしようとしていますが、構文がわかりません。

8 つのプロパティ、文字列、および整数を持つ Word.h というクラスがあります。簡単にするために、ここでは 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];

「'int' から 'NSNumber *' への暗黙的な変換は ARC では許可されていません」というエラー メッセージが表示されるようになりました。

何が間違っているのですか...クラスファイルでプロパティが正しく定義されていませんか?? このプロパティにアクセスするにはどうすればよいですか。文字列で問題なく動作します。

また、後でプロパティにアクセスしたいと思います-どうすればいいですか...例:

cell.label1.text = [newWord2 wordLevel];

これは正しい構文ですか?

誰かが私を助けてくれることを願って、ここで髪の毛の塊を引き裂きます! M

4

1 に答える 1

2

オブジェクトであると宣言wordLevelしました。NSNumberコード内でプレーン C のように扱っていますint。どちらになりたいかを決定し、一貫してそのように扱う必要があります。たとえば、プレーンな Cintプロパティの場合は、代わりに次のように宣言します。

@property (nonatomic, assign) int wordLevel;

一方、本当になりたい場合はwordLevelNSNumber次のようにセッターを使用する必要があります。

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