我有一个NSArray,我想将它分成两个相等的部分(如果奇数"计数"然后添加到后一个新数组) - 我想把它分成"中间"可以这么说.
以下代码完全符合我的要求,但有更好的方法吗?:
// NOTE: `NSArray testableArray` is an NSArray of objects from a class defined elsewhere;
NSMutableArray *leftArray = [[NSMutableArray alloc] init];
NSMutableArray *rightArray = [[NSMutableArray alloc] init];
for (int i=0; i < [testableArray count]; i=i+1) {
if (i < [testableArray count]/2) {
[leftArray addObject:[testableArray objectAtIndex:i]];
}
else {
[rightArray addObject:[testableArray objectAtIndex:i]];
}
}
Run Code Online (Sandbox Code Playgroud)
一旦leftArray和rightArray被制作出来,我就不会改变它们,所以它们不需要是"可变的".我认为可能有一种方法可以使用ObjectsAtIndexes方法或一些快速枚举方法来完成上述代码?但是我无法使用以下代码(或其他变体):
NSArray *leftArray = [[NSArray alloc] initWithObjects:[testableArray objectsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(????, ????)]]];
NSArray *rightArray = [[NSArray alloc] initWithObjects:[testableArray objectsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(????, ????)]]];
Run Code Online (Sandbox Code Playgroud)
有没有人知道我是否朝着正确的方向前进或指向正确的方向?
谢谢!
我有一个类(from NSObject)包含:
NSString name
int position
float speed
Run Code Online (Sandbox Code Playgroud)
然后我NSMutableArray从这个类创建一个对象的数组().我想通过'speed'值对数组进行排序,这是一个float.
我最初的float值是as NSNumber和intas NSInteger,并且我成功排序:
[myMutableArray sortUsingFunction:compareSelector context:@selector(position)];
Run Code Online (Sandbox Code Playgroud)
myMutableArray我的对象数组在哪里.
这是功能:
static int compareSelector(id p1, id p2, void *context) {
SEL methodSelector = (SEL)context;
id value1 = [p1 performSelector:methodSelector];
id value2 = [p2 performSelector:methodSelector];
return [value1 compare:value2];
}
Run Code Online (Sandbox Code Playgroud)
现在我正在使用int而不是NSInteger,上面的代码不起作用.是否有一个更低级的命令,我应该用它来执行排序?谢谢!