标签: nsarray

在objective-c中反转数组中的元素

NSUInteger是否缺少一些东西.我本来想在我的.m文件中这样做.(我看到一些关于使用NSEnumerator的代码,但我不太了解它,所以我想我的需求,这就足够了).

所以我想这样做:

- (NSArray *)reverseArray:(NSMutableArray *)array {
    NSMutableArray *anArray = [[NSMutableArray alloc] initWithCapacity:[array count]];
    for (NSUInteger i = [array count] - 1; i >= 0 ; i--) {
        [anArray addObject:[array objectAtIndex:i]];
    }
    return anArray;
}
Run Code Online (Sandbox Code Playgroud)

这给了我编译器警告:i> = 0是NSUInteger的目的,或者是那些行.当我运行该程序时,它也会崩溃并访问一些超级巨大的数字.我不太清楚为什么.我可以在任何地方将i偏移1并执行此操作,这样可行:

- (NSArray *)reverseArray:(NSMutableArray *)array {
    NSMutableArray *anArray = [[NSMutableArray alloc] initWithCapacity:[array count]];
    for (NSUInteger i = [array count]; (i) ; i--) {
        [anArray addObject:[array objectAtIndex:i - 1]];
    }
    return anArray;
}
Run Code Online (Sandbox Code Playgroud)

我只是不明白为什么第一种方法不起作用.任何帮助,将不胜感激.谢谢!

iphone objective-c nsarray

0
推荐指数
1
解决办法
1943
查看次数

比较两个NSArrays

我如何比较两个NSArray,以便我可以删除两个数组中没有的所有内容.

我试过这样的:

    NSArray *array1 = [NSArray arrayWithObjects:@"1",@"2",@"3",@"4", nil]; 
    NSArray *array2 = [NSArray arrayWithObjects:@"1",@"2",@"5",@"6", nil];

    NSMutableArray *myMutableArray = [NSMutableArray arrayWithArray:array1];
    NSMutableArray *myMutableArrayTwo = [myMutableArray copy];
    [myMutableArray removeObjectsInArray:array2];

    [array1 release];
    [array2 release];

    NSArray *array3 = [myMutableArray copy];
    [myMutableArrayTwo removeObjectsInArray:array3]; // Error here: "SIGABRT"

    NSLog(@"array3:%@",myMutableArrayTwo);
Run Code Online (Sandbox Code Playgroud)

但由于错误,它不起作用.它是:" - [__ NSArrayI removeObjectsInArray:]:无法识别的选择器发送到实例0x4e51550"

我做错了什么?或者有更简单的方法来解决我的问题?谢谢您的帮助

comparison compare objective-c nsmutablearray nsarray

0
推荐指数
1
解决办法
1134
查看次数

使用NSArray获取对象的最小值和最大值

我有一个双重对象的NSArray ....我目前有一个for循环来通过NSArray并平均它们.我正在寻找一种方法来确定NSArray中的最小值和最大值,并且不知道从哪里开始...下面是我必须获得平均值的当前代码.

NSArray *TheArray = [[NSArray alloc] initWithArray:self.fetchedResultsController.fetchedObjects];
    int TotalVisitors = [TheArray count];
    double aveRatingSacore = 0;

for (int i = 0; i < TotalVisitors; i++)
        {
            Visitor *object = [TheArray objectAtIndex:i];
            double two = [object.rating doubleValue];
            aveRatingSacore = aveRatingSacore + two;
        }

        aveRatingSacore = aveRatingSacore/TotalVisitors;
Run Code Online (Sandbox Code Playgroud)

任何帮助,建议或代码将不胜感激.

iphone nsarray ios4 ios5

0
推荐指数
1
解决办法
4224
查看次数

反向排序NSArray

可能重复:
如何在Objective-C中反转NSArray?

我想NSArray按索引降序排序.

我可以排序数组值如何按索引排序...

NSArray* arr = [[NSArray alloc] initWithObjects:@"First",@"Second",@"Third",@"Fifth",@"Last",nil];
Run Code Online (Sandbox Code Playgroud)

结果应该是这样的

  • 持续
  • 第五
  • 第三
  • 第二
  • 第一

iOS中有没有直接的方法?

sorting objective-c nsarray

0
推荐指数
1
解决办法
614
查看次数

NSArray removeObjectAtIndex错误

我正在使用以下代码检查对象是否存在,然后删除它:

if(titlescopy.count >= i)
{
   if([[titlescopy objectAtIndex:i] isKindOfClass:[NSString class]])
   {
       [titlescopy removeObjectAtIndex:i];
   }
}
Run Code Online (Sandbox Code Playgroud)

但是,我收到此错误:

*由于未捕获的异常'NSRangeException'终止应用程序,原因:'* - [__ NSArrayM objectAtIndex:]:索引2超出bounds [0 .. 1]' *第一次抛出调用堆栈:(0x365a56c3 0x3881e97f 0x364f1055 0x494b 0x37fdb8d5 0x37fe7d75 0x37fe7a81 0x38001ddd 0x38001b97 0x172bd 0x3805f8e5 0x3805f897 0x3805f875 0x3805f12b 0x3805f621 0x37f87d29 0x37f74f29 0x37f74843 0x34ea25d3 0x34ea2203 0x3657a593 0x3657a537 0x365793b9 0x364ec39d 0x364ec229 0x34ea131b 0x37fc88f9 0x283b 0x2798)libc ++ abi.dylib:终止调用抛出异常(lldb)

为什么会这样?我正在使用的代码应该在尝试删除它之前检查对象是否存在,但显然不是.

谢谢!

iphone xcode objective-c nsarray ios

0
推荐指数
1
解决办法
2020
查看次数

使用NSArray的"for x in"语法

我有这样的指示:

[self someMethod:CGPointMake(50, 50)];
[self someMethod:CGPointMake(270, 50)];
[self someMethod:CGPointMake(50, 360)];
[self someMethod:CGPointMake(270, 360)];
...
Run Code Online (Sandbox Code Playgroud)

我想使用NSArray重构代码,如下所示:

NSArray items = [NSArray initWithObjects:
                  CGPointMake(50, 50),
                  CGPointMake(270, 50),
                  CGPointMake(50, 360),
                  CGPointMake(270, 360),
                  ...
                  nil];
Run Code Online (Sandbox Code Playgroud)

我不知道正确的语法,有人可以帮助我吗?我试过这个,但XCode告诉我"Selector元素类型CGPoint不是一个有效的对象":

CGPoint point = [CGPoint alloc];

for (point in items) {
    [self someMethod:point];
}
Run Code Online (Sandbox Code Playgroud)

refactoring objective-c nsarray

0
推荐指数
1
解决办法
1227
查看次数

Objective - c - 指针以及将数组分配给另一个时发生的事情

所以我想知道当我这样做会发生什么

NSMutableArray *arr1 = [[NSMutableArray alloc] init];
NSMutableArray *arr2 = [[NSMutableArray alloc] init];

[arr1 addobject:ob1];

arr2 = arr1;

[self changeValue:[arr2 objectAtIndex:2]]; //function that will modify what is sent to it
Run Code Online (Sandbox Code Playgroud)


1)我甚至可以在nsmutablearrays之间进行操作吗?
2)如果我要访问arr1中的对象,是否会被修改?
3)它有多深? - 如果我要从其他地方访问该对象,是否会被修改?
4)我假设使用mutableCopy将返回一个全新的数组.
5)无论如何都要模拟这种深层连接/连接?例如,如果我想将同一个对象分配给2个不同的数组,那么如果我修改了一个,那么它会改变两个数组中的那个对象吗?
6)这个词代表什么?我不认为它是连接/连接.

非常感谢
- 詹姆斯

objective-c nsmutablearray nsarray ios

0
推荐指数
1
解决办法
431
查看次数

按升序对NSArray数字进行排序,但最后发送零

我有一个简单的NSArray,包含NSNumbers.

我以这种方式按升序对数组进行排序:

NSSortDescriptor *lowestToHighest = [NSSortDescriptor sortDescriptorWithKey:@"self" ascending:YES];
[_scores sortUsingDescriptors:[NSArray arrayWithObject:lowestToHighest]];
Run Code Online (Sandbox Code Playgroud)

我的问题是,我希望NSNumbers包含0在最后而不是在开头.这是我可能要排序的数组(包含一些空的NSNumbers仅用于示例):

0
25
12
0
8
0
Run Code Online (Sandbox Code Playgroud)

我的代码当然按如下方式对数组进行排序:

0
0
0
8
12
25
Run Code Online (Sandbox Code Playgroud)

我想要的是这个:

8
12
25
0
0
0
Run Code Online (Sandbox Code Playgroud)

当然我可以通过删除行0并在最后添加它们来手动重新订购它,但我正在寻找最干净的解决方案.

objective-c nsarray nssortdescriptor ios

0
推荐指数
1
解决办法
6957
查看次数

[__NSArrayM objectAtIndex:]:索引2超出边界[0 .. 1]

我是一个新的iOS开发人员; 我有一个解析和动态单元格的应用程序,但当我运行应用程序时,我发现应用程序崩溃,因为标题上的原因我的代码如下

- (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view
{

    myArray = [[NSMutableArray alloc] init];


    //create new view if no view is available for recycling

   // view = [[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 250.0f, 300.0f)] autorelease];

    FXImageView *imageView = [[[FXImageView alloc] initWithFrame:CGRectMake(0, 0, 250.0f, 350.0f)] autorelease];
    imageView.contentMode = UIViewContentModeScaleAspectFit;
    imageView.asynchronous = YES;
   // imageView.reflectionScale = 0.5f;
   // imageView.reflectionAlpha = 0.25f;
  //  imageView.reflectionGap = 10.0f;
    imageView.shadowOffset = CGSizeMake(0.0f, 2.0f);
    imageView.shadowBlur = 5.0f;
    imageView.cornerRadius = 10.0f;
    view = imageView;

    [ProgressHUD dismiss];

     NSString *string1 …
Run Code Online (Sandbox Code Playgroud)

nsarray ios nsrangeexception icarousel uicollectionview

0
推荐指数
1
解决办法
1万
查看次数

错误:*在iOS 7项目的NSArray上使用未声明的标识符'firstObject'

UISplitViewController *splitViewController     = (UISplitViewController *)self.window.rootViewController;
NSArray *arrayViewControllers                  = (NSArray *)splitViewController.viewControllers;

ViewController *masterViewController           = (ViewController *) arrayViewControllers[firstObject];
VideoViewController *detailVideoViewController = (VideoViewController *) arrayViewControllers[lastObject];
Run Code Online (Sandbox Code Playgroud)

错误:*使用未声明的标识符'firstObject'

错误:*使用未声明的标识符'lastObject'

什么?

objective-c nsarray ios

0
推荐指数
1
解决办法
230
查看次数