armnotstrong
armnotstrong

Reputation: 9065

Implicit conversion of an Objective-C pointer to 'int *' is disallowed with ARC after move property to .h file

I have a controller which has properties defined like this in .m file:

@interface ContentViewController ()<SwipeViewDataSource, SwipeViewDelegate>
@property (nonatomic, strong)  SwipeView *swipeView;
@property (nonatomic, strong) NSMutableArray *items;
@property (nonatomic, strong) CateItem *cateItem;
@end

Then because I want to access swaipView and cateItem in other controller so I think it's ok to move them to the .h file like this:

@interface ContentViewController : UIViewController
@property (nonatomic, strong)  SwipeView *swipeView;
@property (nonatomic, strong) CateItem *cateItem;
@end

But after doing that, previously working code like this:

   if([[CateItem allObjects] count ] != 0){
        self.cateItem = [CateItem allObjects][0];
    }

will complain like this:

enter image description here

What happened and how to fix this?

as required by the comment here is the cateItem, its a realm model

#import <Foundation/Foundation.h>
#import <Realm/Realm.h>

@interface LivePhotoItem: RLMObject
@property NSString *image;
@property NSString *video;
@property NSString *fileid;
@property BOOL downloaded;
@end


RLM_ARRAY_TYPE(LivePhotoItem)
@interface CateItem: RLMObject
@property NSString *_id;
@property NSString *cateId;
@property NSString *category;
@property RLMArray<LivePhotoItem> *items;
@property NSString *cnName;
@end

Upvotes: 0

Views: 1684

Answers (1)

jscs
jscs

Reputation: 64002

You need to add a forward declaration of CateItem to the ContentViewController header above the @interface block:

@class CateItem;

Otherwise the compiler, lacking information about the type CateItem, assumes type of the property to be int *.

Upvotes: 3

Related Questions