'[self theArray] ='而不是'NSArray*theArray ='

yhl*_*yhl 0 objective-c nsarray ios

如果我想创建一个2x2数组,我会这样做:

NSArray *theArray = [NSArray arrayWithObjects:
    [NSArray arrayWithObjects:@"String1",@"String2",nil],
    [NSArray arrayWithObjects:@"String3",@"String4",nil],
nil];
Run Code Online (Sandbox Code Playgroud)

但是,如果我想以另一种方式创建它,我会收到错误"表达式不可分配"

[self theArray] = [NSArray arrayWithObjects:
    [NSArray arrayWithObjects:@"String1",@"String2",nil],
    [NSArray arrayWithObjects:@"String3",@"String4",nil],
nil];
Run Code Online (Sandbox Code Playgroud)

在上面的例子中使用我的[self theArray]的正确方法是什么?

Dan*_*n F 8

self.theArray = [NSArray arrayWithObjects:...
Run Code Online (Sandbox Code Playgroud)

[self theArray] 是一个访问者,而不是一个变异者

或者你可以使用

[self setTheArray:[NSArray arrayWithObjects:...];
Run Code Online (Sandbox Code Playgroud)


Jor*_*ers 5

使用点表示法完成属性分配.要保持简短,请使用NSArray文字语法.

self.theArray = @[
    @[@"String1", @"String2"],
    @[@"String3", @"String4"]
];
Run Code Online (Sandbox Code Playgroud)

这假设您theArray当然声明为属性并且可以使用setter:

@property(strong) NSArray *theArray;
Run Code Online (Sandbox Code Playgroud)