NSArray 用一些元素加上另一个 NSArray 创建
NSArray create with some elements plus another NSArray
我正在尝试在
realm 上使用模型继承。所以我想使用下面的代码来覆盖并调用 super
方法。
+ (NSArray *)requiredProperties {
return @[[super requiredProperties], @"thisIsRequired",@"thisIsAlsoRequired"];
}
所以问题是:在使用另一个 NSArray
和更多元素的同时即时创建 NSArray
是否可以:
NSArray *mySecondArray = @[myFirstArray, @"andSomeExtras", @"alsoMoreExtras"];
我一直期待的是; mySecondArray
的第一个元素应该是 myFirstArray
的第一个元素。 mySecondArray
的第二个元素应该是 myFirstArray
的第二个元素,依此类推。 (myFirstArray
的大小)mySecondArray
的第 +1 个元素应该是 @"thisIsRequired"
.
还是我在编什么魔法?
好吧,如您所见,我是新手,可能会感到困惑。
是的,没关系,只要你记得你在代码中的任何地方所做的事情。
但是,您通常将 NSArray
用于同类对象集合,并使用 NSDictionary
,或者更好地使用您自己的 DTO class,用于异构数据聚合。
NSArray
官方文档在 arrayWithObjects:
方法的专用部分中显示了一个类似的示例
NSArray
实际上是 id
的数组,即使启用了 generics。
关于 Objective C generics 的其他 link 也可能有助于理解原始 NSArray
class.
的性质
为什么不使用 NSMutableArray 而只添加对象?
NSMutableArray *mySecondArray = [myFirstArray mutableCopy];
[mySecondArray addObject:@"andSomeExtras"];
[mySecondArray addObject:@"alsoMoreExtras"];
一般情况下,用Foundation来实例化这种异构数组是没问题的。这不是你想要的。在您的示例中,您最终会得到以下结果:
NSArray *myFirstArray = @[@"firstsFirstsElement", @"firstsSecondElement"];
NSArray *mySecondArray = @[myFirstArray, @"andSomeExtras", @"alsoMoreExtras"];
/* =>
@[
@[@"firstsFirstsElement", @"firstsSecondElement"],
@"andSomeExtras",
@"alsoMoreExtras",
]
*/
您正在寻找 - arrayByAddingObjectsFromArray:
。您可以像下面看到的那样使用它:
+ (NSArray *)requiredProperties {
return [super.requiredProperties arrayByAddingObjectsFromArray:@[
@"thisIsRequired",
@"thisIsAlsoRequired",
]];
}
我正在尝试在 realm 上使用模型继承。所以我想使用下面的代码来覆盖并调用
super
方法。
+ (NSArray *)requiredProperties {
return @[[super requiredProperties], @"thisIsRequired",@"thisIsAlsoRequired"];
}
所以问题是:在使用另一个 NSArray
和更多元素的同时即时创建 NSArray
是否可以:
NSArray *mySecondArray = @[myFirstArray, @"andSomeExtras", @"alsoMoreExtras"];
我一直期待的是; mySecondArray
的第一个元素应该是 myFirstArray
的第一个元素。 mySecondArray
的第二个元素应该是 myFirstArray
的第二个元素,依此类推。 (myFirstArray
的大小)mySecondArray
的第 +1 个元素应该是 @"thisIsRequired"
.
还是我在编什么魔法?
好吧,如您所见,我是新手,可能会感到困惑。
是的,没关系,只要你记得你在代码中的任何地方所做的事情。
但是,您通常将 NSArray
用于同类对象集合,并使用 NSDictionary
,或者更好地使用您自己的 DTO class,用于异构数据聚合。
NSArray
官方文档在 arrayWithObjects:
NSArray
实际上是 id
的数组,即使启用了 generics。
关于 Objective C generics 的其他 link 也可能有助于理解原始 NSArray
class.
为什么不使用 NSMutableArray 而只添加对象?
NSMutableArray *mySecondArray = [myFirstArray mutableCopy];
[mySecondArray addObject:@"andSomeExtras"];
[mySecondArray addObject:@"alsoMoreExtras"];
一般情况下,用Foundation来实例化这种异构数组是没问题的。这不是你想要的。在您的示例中,您最终会得到以下结果:
NSArray *myFirstArray = @[@"firstsFirstsElement", @"firstsSecondElement"];
NSArray *mySecondArray = @[myFirstArray, @"andSomeExtras", @"alsoMoreExtras"];
/* =>
@[
@[@"firstsFirstsElement", @"firstsSecondElement"],
@"andSomeExtras",
@"alsoMoreExtras",
]
*/
您正在寻找 - arrayByAddingObjectsFromArray:
。您可以像下面看到的那样使用它:
+ (NSArray *)requiredProperties {
return [super.requiredProperties arrayByAddingObjectsFromArray:@[
@"thisIsRequired",
@"thisIsAlsoRequired",
]];
}