我正在开发一个包含名为Survey的类的Singleton实例的项目。在该单例实例中是一个名为" itemArray的属性,"这是一个NSMutableArray,它包含任意数量的Item类实例。
My Items类包含几个NSInteger属性,但出于应用程序的目的,我需要初始化所有NSIntegers,其值为-1而不是默认值0.
现在,对于我的Survey类(具有Singleton实例的类),我在实现中使用以下方法来更改属性的默认值:
-(id)init {
if (self = [super init]) {
_thingy = -1;
}
return self;
}
这样可行,但出于某种原因,相同的语法(具有不同的属性)对我的Item实例的实例不起作用。对于它的价值,下面的代码块是创建2个Item实例,并将它们插入到itemArray中。我也试过了Item * item1 = [[Item alloc] init;方法无济于事。
Item *item1;
[[[Survey sharedInstance]itemArray]insertObject:item1 atIndex:0];
Item *item2;
[[[Survey sharedInstance]itemArray]insertObject:item2 atIndex:1];
}
我将不胜感激。
!!!!! UPDATE !!!!! 我输入了以下条件:
if (![[Survey sharedInstance]itemArray]){
NSLog(@"Test");
}
"测试"登录到控制台,所以看起来itemArray没有被初始化。不过,我不确定如何实际初始化它。当我尝试以下内容时:
[[Survey sharedInstance]addressArray] = [[NSMutableArray alloc]init];
我收到错误说"表达式不可分配。"
Survey.h:
#import <Foundation/Foundation.h>
@interface Survey : NSObject
+(instancetype)sharedInstance;
@property (nonatomic, strong) NSString *name;
@property (nonatomic, strong) NSString *emailAddress;
@property (nonatomic, assign) NSInteger trigger1;
@property (nonatomic, assign) NSInteger trigger2;
@property (nonatomic, assign) NSInteger trigger3;
@property (nonatomic, assign) NSInteger activeItem;
@property (nonatomic, strong) NSMutableArray *itemArray;
@end
Survey.m
#import "Survey.h"
@implementation Survey
+ (instancetype)sharedInstance {
static Survey *_instance;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_instance = [[Survey alloc] init];
});
return _instance;
}
-(id)init {
if (self = [super init]) {
_storage = -1;
}
return self;
}
@end
答案 0 :(得分:1)
而不是
[[Survey sharedInstance]addressArray] = [[NSMutableArray alloc]init];
你需要使用
[Survey sharedInstance].addressArray = [[NSMutableArray alloc]init];
或
[[Survey sharedInstance] setAddressArray:[[NSMutableArray alloc]init]];
您试图为getter方法的返回值赋值,这是不可能的,因此编译器说&#34;表达式不可分配。&#34;您需要使用setter方法或点符号。