标签: nsarray

你如何改变NSArray中的元素?

关于如何在Objective-C中处理数组,我有点困惑.如果我有一个像这样的数组

NSarray *myArray = [[NSArray alloc]
                                  initWithObjects:@"N", @"N", @"N", @"N", @"N",
                                  nil];
Run Code Online (Sandbox Code Playgroud)

如何将第一次出现更改为"Y"?

objective-c nsarray

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

为什么在指定NSStrings时快速枚举不会跳过NSNumbers?

我以为我知道如何使用快速枚举,但有一些我不明白的事情.如果我创建三个NSString对象和三个NSNumber对象并将它们放在NSMutableArray:

NSString *str1 = @"str1";
NSString *str2 = @"str2";
NSString *str3 = @"str3";

NSNumber *nb1 = [NSNumber numberWithInt:1];
NSNumber *nb2 = [NSNumber numberWithInt:2];
NSNumber *nb3 = [NSNumber numberWithInt:3];

NSArray *array = [[NSArray alloc] initWithObjects:str1, str2, str3, nb1, nb2, nb3, nil];
Run Code Online (Sandbox Code Playgroud)

然后我对所有NSString对象进行快速枚举,如下所示:

for (NSString *str in array) {
    NSLog(@"str : %@", str);
}
Run Code Online (Sandbox Code Playgroud)

在控制台中,我得到了这个结果:

2011-08-02 13:53:12.873 FastEnumeration[14172:b603] str : str1
2011-08-02 13:53:12.874 FastEnumeration[14172:b603] str : str2
2011-08-02 13:53:12.875 FastEnumeration[14172:b603] str : str3
2011-08-02 …
Run Code Online (Sandbox Code Playgroud)

objective-c nsarray fast-enumeration

4
推荐指数
3
解决办法
2372
查看次数

Objective-c:找到NSArray中元素的最后一个索引

我有一个NSArray,我想找到一个元素的最后一个出现.例如:

[apple, oranges, pears, apple, bananas];
int i = lastIndexOf("apple");
out: i == 3;
Run Code Online (Sandbox Code Playgroud)

我很难找到一个看APIS的简单解决方案,但是没有例子,所以很难理解我应该使用哪个函数.

objective-c find nsarray

4
推荐指数
1
解决办法
2546
查看次数

如何将字典数据添加到数组中?

我制作了一个数组和一本字典.现在我想把字典的值放到数组中..我对目标C很新,所以请帮助."viewcontroller .m"

#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController

- (void)viewDidLoad
{
[super viewDidLoad];

marray = [[NSMutableArray alloc]initWithObjects:@"1",@"2",@"3",@"4", nil];
marray = [[NSMutableArray alloc]initWithObjects:@"6",@"7",@"8",@"9",@"10", nil];
[self displayarray];
[marray release];
mDictionary = [[NSMutableDictionary alloc]init];
[mDictionary setValue:@"sdfsdhfg" forKey:@"firstname"];
[mDictionary setValue:@"kvxv" forKey:@"lastname"];
[self displaydict];
[mDictionary release];
}
-(void)displaydict{
CFShow(mDictionary);
}
-(void)displayarray{
for (int i = 0; i<[marray count]; i++) {
    NSLog(@"the array data present at %d index is %@",i,[marray objectAtIndex:i]);
}
}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}


@end
Run Code Online (Sandbox Code Playgroud)

xcode objective-c nsdictionary nsarray

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

从事件数组中按日期将UITableView排序为多个部分

我从2个不同的共享Google日历中检索了数据,并将数据存储在一个数组中.我需要将数据排序为按日期排序的分段UITableView.

继承我的代码:

CalendarModel.h

#import "JSONModel.h"
#import "Time.h"

@interface CalendarModel : JSONModel

@property (strong, nonatomic) NSString* title;
@property (strong, nonatomic) NSArray<Time>* time;

@end
Run Code Online (Sandbox Code Playgroud)

CalendarModel.m

#import "CalendarModel.h"

@implementation CalendarModel


+(JSONKeyMapper*)keyMapper
{
    return [[JSONKeyMapper alloc] initWithDictionary:@{
            @"gd$when": @"time",
            @"title.$t": @"title",
            }];
}

@end
Run Code Online (Sandbox Code Playgroud)

time.h中

#import "JSONModel.h"

@protocol Time @end

@interface Time : JSONModel

@property (strong, nonatomic) NSString* startTime;
@property (strong, nonatomic) NSString* endTime;

@end
Run Code Online (Sandbox Code Playgroud)

Time.m什么都不做,因为它是由JSONModel处理的

SportsViewController.m

#import "SportsViewController.h"
#import "JSONModelLib.h"
#import "CalendarModel.h"
#import "Time.h"
#import "JSONValueTransformer.h"

@interface SportsViewController () 

@property (strong, nonatomic) NSMutableArray …
Run Code Online (Sandbox Code Playgroud)

json objective-c uitableview nsarray ios

4
推荐指数
1
解决办法
6989
查看次数

Objective-C:复制数组,仅在复制中修改元素(对象)

在询问这个问题之前,我已经阅读了很多SO帖子,我猜这个答案就在那里,但我没有看到.我是Objective-C的新手,我正试图做一个(看似)简单的动作,我无法弄明白.

一般的想法是我有一个NSArray充满对象(特别是类型UIImageView).我想要复制那个数组,我已经做了很多种方式(都成功了).

复制后,我现在有两个数组.我想修改一个对象,比如索引2,只在副本中修改.

到目前为止似乎,因为副本只是复制引用(或指针),更改索引2处的对象将在副本和原始文件中更改它.

那有意义吗?

NSArray *originalArray = @[object1, object2];
Run Code Online (Sandbox Code Playgroud)

我尝试复制这个数组的方式,以便我可以实现我想要的:

NSMutableArray *originalArrayCopy = [NSMutableArray arrayWithArray:originalArray];

NSArray *originalArrayCopy = [originalArray copy];

NSMutableArray *originalArrayCopy = [[NSMutableArray alloc] initWithArray:originalArray];
Run Code Online (Sandbox Code Playgroud)

并且似乎在每种情况下,从副本修改对象也会在原始对象中修改它.

注意:虽然NSArray显然是不可变的,但我原始数组中的对象是可变的.

objective-c nsmutablearray nsarray

4
推荐指数
1
解决办法
8868
查看次数

获取NSDictionary的NSArray的值列表

我有以下NSArray:

NSArray myArray = @[@{@300:@"5 min"},
                    @{@900:@"15 min"},
                    @{@1800:@"30 min"},
                    @{@3600:@"1 hour"}];
Run Code Online (Sandbox Code Playgroud)

我想要我的词典的价值列表:

@[@"5 min",@"15 min",@"30 min",@"1 hour"]
Run Code Online (Sandbox Code Playgroud)

我的词典的关键列表:

@[@300, @900, @1800, @3600]
Run Code Online (Sandbox Code Playgroud)

最好的方法是什么?我在考虑谓词,但我不知道如何使用它?

objective-c nsdictionary nsarray nspredicate

4
推荐指数
1
解决办法
6169
查看次数

NSArray 或 NSMutableArray 使用 ARC 可能存在内存泄漏

BKObject 是一个自定义对象,我想将多个 BKObject 放入一个数组中。

BK视图控制器:

#import <UIKit/UIKit.h>
#import "BKObject.h"

@interface BKViewController : UIViewController

@property (strong, nonatomic) NSArray *data;
@property (weak, nonatomic) BKObject *tmpObject;

@end
Run Code Online (Sandbox Code Playgroud)

BKViewController.m:

#import "BKViewController.h"

@implementation BKViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSMutableArray *arr = [[NSMutableArray alloc] init];
    for(NSInteger i = 0; i < 100000; i++){
        [arr addObject:[[BKObject alloc] initWithName:@""]];
    }

    self.data = [NSArray arrayWithArray:arr];

    __weak BKObject *weakMutableObject = arr[0];
    [arr removeAllObjects];
    NSLog(@"%@", weakMutableObject); // print out the object, why?

    __weak BKObject *weakObject = self.data[0];
    self.data = nil; …
Run Code Online (Sandbox Code Playgroud)

memory-leaks objective-c nsmutablearray nsarray ios

4
推荐指数
1
解决办法
6535
查看次数

为什么迭代NSArray要比通过NSSet迭代更快?

我想知道为什么通过NSArray迭代比通过NSSet迭代更快?我想象它与NSArray的订购事实有关,而NSSet不是,但我是一个经过认证的答案,而不仅仅是猜测.

编辑:

我的问题是:为什么它更快,没有在该主题中解释.而不是它更快.

objective-c nsarray nsset fast-enumeration

4
推荐指数
2
解决办法
3899
查看次数

如何在不改变主数组中原始顺序的情况下通过 BOOL 快速排序?

我有一组模型,它有 2 个属性:

1.标题 (字符串)

2. isSelected(布尔)

我想根据isSelected属性对它们进行排序,使其相对于源数组的序列进行排序。例如,如果全部为 FALSE 或 TRUE,则排序后应该有相同的输出。

但如果我使用以下方法,它会在基于 BOOL 属性对它们进行排序后更改原始排序。

someArray = array.sort { $0.selected && !$1.selected }
Run Code Online (Sandbox Code Playgroud)

我应该怎么做才能保留原来的顺序?

编辑1

title图片中未显示排序顺序。可能服务器向我发送了 4 个标题为 Z、Y、P、A 的对象。因此,如果全部都是假的,一旦我排序,它应该像 Z 假,Y 假,P 假,A 假。

arrays sorting nsarray ios swift

4
推荐指数
2
解决办法
2118
查看次数