标签: nsarray

NSMutableArray -removeObject:如果它有不同的内存地址,还会删除NSString吗?

示例:我添加了一些NSString对象NSMutableArray: @"Foo", @"Bar", @“FooBar".现在在其他地方我再次访问该数组,我想删除@"Foo".所以我创建了一个新的NSString @"Foo",并将其传递给-removeObject:.文档没有说明哪些标准-removeObject有效.我认为它只关注内存地址,所以在这种情况下它什么都不做.那是对的吗?

iphone cocoa-touch uikit nsarray

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

传递时NSArray成为NSCFArray

我有一个接收许多不同类型对象的方法,并决定如何处理它们:

-(void)performAction:(NSObject *)myAction withItem:(Item *)myItem {

actionCount = -1;
NSLog(@"-- NEW ACTION ARRAY --");
if ([myAction isMemberOfClass:[Look class]]) {
    currentActionArray = [self createLookArray:(Look *)myAction item:myItem];
} else if ([myAction isMemberOfClass:[Use class]]) {
    currentActionArray = [self createUseArray:(Use *)myAction item:myItem];
} else if ([myAction isMemberOfClass:[Exit class]]) {
    currentActionArray = [self createExitArray:(Exit *)myAction item:myItem];
} else if ([myAction isMemberOfClass:[NSArray class]] ) {
    NSLog(@"--- CUSTOM ACTION --- %@", myAction);
    currentActionArray = (NSArray *)myAction;
} 
[self performNextAction];
Run Code Online (Sandbox Code Playgroud)

}

这里有四件事之一:Look,Use,Exit或NSArray.前三个被送去成为NSArrays,最后一个已经是NSArray.

现在,当我从其他地方传递NSArray时,就像这样:

    NSArray *myAction = [[NSArray alloc] …
Run Code Online (Sandbox Code Playgroud)

iphone cocoa-touch objective-c nsarray

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

NSString进入NSArray

我目前正在接收一个文件并将其存储到NSString中.然后我从字符串中创建一个数组并在TableView中显示它.这在一定程度上起作用.我目前正在接收这样的数据:

CompanyName | AccountCode\r \nCompanyName | AccountCode\r \nCompanyName | AccountCode\r \n等等...

在我正在做的那一刻:

NSString *dataString = [NSString stringWithContentsOfURL:url encoding:nil error:nil];
myArray = [dataString componentsSeparatedByString:@"\r\n"];
Run Code Online (Sandbox Code Playgroud)

它显示数据为:

CompanyName | AccountCode CompanyName | AccountCode CompanyName | AccountCode

我的问题是:我可以将"dataString"拆分为二维数组吗?或者我应该创建2个数组(一个使用CompanyName,一个使用AccountCode).我该怎么做?

谢谢

编辑:

// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";  

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
    }

    // Configure the cell.
    if (testArray.count …
Run Code Online (Sandbox Code Playgroud)

iphone xcode nsstring nsarray

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

从NSArray中查找indexOfObject

我有一个充满自定义对象的NSArray.每个对象都有几个变量:pk,amount,date等.

我想获取pk变量中编号最大的对象.我可以这样做:

 NSUInteger maximumpk = [[bets valueForKeyPath:@"@max.pk"] intValue];
Run Code Online (Sandbox Code Playgroud)

这给了我最高pk的实际值.现在我需要获取该对象的索引.我看到当数组只有1个数据变量时使用indexOfObject,但是如何在这个实例中使用它呢?

谢谢

cocoa-touch objective-c nsarray ios

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

在enumerateObjectsUsingBlock期间使用removeObject是否安全:?

这段代码运行时没有崩溃,我在文档中看不到任何内容,但是它真的安全吗?

[mutableArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
    // do some stuff to obj before removing it
    [mutableArray removeObject:obj];
}];
Run Code Online (Sandbox Code Playgroud)

objective-c foundation nsarray

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

IOS [__ NSPlaceholderArray initWithObjects:count:]:尝试从对象[0]中插入nil对象

我正在尝试创建像facebook这样的动态幻灯片菜单.

我必须从json请求中获取一些数据.并在幻灯片表视图的其中一个部分中显示此数据.我是objective-c的新手,我也尝试过使用NSMutableArrays,我遇到了一个错误.在其他表视图中,我做同样但没有部分.只有一个MutableArray,我可以显示表格.

我做这样的事情:

-(void) requestJSONFinishedWithParsedObject:(NSDictionary *)parsedObject{


  NSArray  *projectsObjectArray = [parsedObject objectForKey:@"projects"];

    [self createMainNavigationController];
    self.section1 = [NSArray arrayWithObjects:@"Profile", @"Notifications", @"Exit", nil];
    self.section2 = [NSArray arrayWithObjects:@"Main", nil];


    for (NSDictionary *projectObject in projectsObjectArray)
    {
        Project *newProject = [[Project alloc] init];

        newProject.title= [projectObject objectForKey:@"title"];

        self.section3 = [NSArray arrayWithObject:newProject.title];
    }

    self.menu = [NSArray arrayWithObjects:self.section1, self.section2, self.section3, nil];
    [menuTableView reloadData];
}
Run Code Online (Sandbox Code Playgroud)

我有这个错误:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSPlaceholderArray initWithObjects:count:]: attempt to insert nil object from objects[0]'
Run Code Online (Sandbox Code Playgroud)

uitableview nsarray tableview ios

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

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
查看次数

2 NSArrays,根据属性值查找交集?

我有两个不同类型的自定义对象的2个NSArrays.

对象A属性:ID:名称:作者:

对象B属性:bookID:value:终止符:

我需要过滤一个类型为"A"的对象数组,其ID值等于包含"B"类型对象的第二个数组的任何对象的bookID值.

我试图通过将数组转换为集合来使用intersectSet:方法,但由于这两个对象的类型不同,所以没有任何反应.

什么是最有效的过滤方式?我可以指定在进行交叉时要查看的属性吗?

objective-c nsarray nsset nspredicate ios

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

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

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

编辑:

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

objective-c nsarray nsset fast-enumeration

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