gpt4 book ai didi

ios - 如何用新对象替换给定索引处的 NSMutableArray 中的对象

转载 作者:IT王子 更新时间:2023-10-29 07:43:39 25 4
gpt4 key购买 nike

我有一个 NSMutableArray 对象(保留的,合成的),它启动得很好,我可以使用 addObject: 方法轻松地向它添加对象。但是如果我想用 NSMutableArray 中的新对象替换某个索引处的对象,这是行不通的。

例如:

A类.h:

@interface ClassA : NSObject {
NSMutableArray *list;
}

@property (nonatomic, copy, readwrite) NSMutableArray *list;

@end

ClassA.m:

#import "ClassA.h"

@implementation ClassA

@synthesize list;

- (id)init
{
[super init];
NSMutableArray *localList = [[NSMutableArray alloc] init];
self.list = localList;
[localList release];
//Add initial data
[list addObject:@"Hello "];
[list addObject:@"World"];
}


// Custom set accessor to ensure the new list is mutable
- (void)setList:(NSMutableArray *)newList
{
if (list != newList)
{
[list release];
list = [newList mutableCopy];
}
}

-(void)updateTitle:(NSString *)newTitle:(NSString *)theIndex
{
int i = [theIndex intValue]-1;
[self.list replaceObjectAtIndex:i withObject:newTitle];
NSLog((NSString *)[self.list objectAtIndex:i]); // gives the correct output
}

但是,更改仅在方法内部保持为真。从任何其他方法,

NSLog((NSString *)[self.list objectAtIndex:i]);

给出相同的旧值。

我怎样才能在特定索引处用新对象替换旧对象,以便在任何其他方法中也能注意到更改。

我什至这样修改了方法,但结果是一样的:

-(void)updateTitle:(NSString *)newTitle:(NSString *)theIndex
{
int i = [theIndex intValue]-1;

NSMutableArray *localList = [[NSMutableArray alloc] init];
localList = [localList mutableCopy];
for(int j = 0; j < [list count]; j++)
{
if(j == i)
{
[localList addObject:newTitle];
NSLog(@"j == 1");
NSLog([NSString stringWithFormat:@"%d", j]);
}
else
{
[localList addObject:(NSString *)[self.list objectAtIndex:j]];
}
}
[self.list release];
//self.list = [localList mutableCopy];
[self setList:localList];
[localList release];
}

请大家帮忙:)

最佳答案

这就是诀窍:

[myMutableArray replaceObjectAtIndex:index withObject:newObject];

关于ios - 如何用新对象替换给定索引处的 NSMutableArray 中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3064122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com