2016-06-18 20 views
0

ここは私のモデルクラスLevelInformationModelです。プロパティ 'levelCompleted'が 'id'タイプのオブジェクトに見つかりません

 @interface LevelInformationModel : NSObject 

    @property NSInteger levelCompleted; 
    +(id)sharedModel; 

    @end 


    #import "LevelInformationModel.h" 

    @implementation LevelInformationModel 

    @synthesize levelCompleted; 

    /* Return singleton model */ 
    + (id)sharedModel { 
     static LevelInformationModel *sharedModel = nil; 
     static dispatch_once_t onceToken; 
     dispatch_once(&onceToken, ^{ 
      sharedModel = [[self alloc] init]; 
     }); 
     return sharedModel; 
    } 

    - (id)init { 
     self = [super init]; 
     if (self) { 
      self.levelCompleted = 0; 
     } 
     return self; 
    } 

    @end 

そして、ここでは、私は(GameViewControllerクラスで)それをすべてを使用している方法です。私はすでにLevelInformationModel.hを輸入しています。

 NSInteger currentLevel = [LevelInformationModel sharedModel].levelCompleted; 

しかしlevelCompletedプロパティ上記は、型「id'`に見つからないエラーProperty 'levelCompletedです。どんな考えもすばらしいでしょう。

答えて

2

これは、メソッドがIDを返すためです。あなたは +(instancetype)sharedModel;

を使用する必要があります

+(LevelInformationModel)sharedModel 
{ 
. 
+2

。 – Mike

+0

@Frankこの回答があなたの問題の解決に役立ったと思われる場合は、緑のチェックマークをクリックして「受け入れ済み」とマークしてください。これはコミュニティが未回答の質問に焦点を当てるのに役立ちます。 – Lahiru

+0

ああ、もちろん、....私の謝罪。 – Frank

0

これに

変更、それは「間違いなく利点があります。あなたが 『ID』を使用する場合、あなたは本質的にタイプinstancetypeで。全くチェックを取得していません、コンパイラとIDEはどのような種類のものが返されているかを知っていて、コードをよくチェックしてオートコンプリートをよくすることができます。あなたはむしろIDまたは実際のクラス名で、 `instanceType`を使用しての習慣を身に取得する必要

Would it be beneficial to begin using instancetype instead of id?

https://developer.apple.com/library/ios/releasenotes/ObjectiveC/ModernizationObjC/AdoptingModernObjective-C/AdoptingModernObjective-C.html

関連する問題