标签: nsmutablearray

检查NSMutableArray是否包含另一个数组的值

我有一个NSMutableArray包含CMTime对象的3个对象.如何以有效的方式遍历所有这三个,并找出这三个中是否存在重复值?例如,我正在迭代其中一个时间并读取值并将其存储x.现在,我想看看是否x在其他两个数组中发生(在任何位置).我试着找一个contains方法,但找不到一个.我确实遇到过filterUsingPredicate,但我不确定这是否是最好的方式,也不知道如何实际使用谓词.

iphone algorithm objective-c nsmutablearray ios

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

条件nsarray计数

我想要计算子数组满足条件的数组.我以为我能做到这一点,但我做不到.

NSLog(@"%d",[[_sections enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
            [[obj objectAtIndex:4] isEqualToString:@"1"];
        }] count]);
Run Code Online (Sandbox Code Playgroud)

xcode cocoa-touch objective-c nsmutablearray nsarray

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

奇怪的索引2超出空数组错误的界限

我似乎无法找到什么是错的.这是我的代码:

NSMutableArray *sortedActivities = [NSMutableArray arrayWithCapacity:self.trainingSession.activities.count];
for (ManagedActivity *activity in self.trainingSession.activities)
    [sortedActivities insertObject:activity atIndex:[activity.activityIndex unsignedIntegerValue]];
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我希望通过活动中名为activityIndex的属性对活动集(在trainingSession中的关系)进行排序.活动的索引始终从0开始,这意味着没有索引超过trainSession.activities.count-1.

我通过分配具有适当容量的NSMutableArray进行排序,然后迭代活动(一次)并将它们插入到正确的索引中.由于某种原因,我不知道我得到这个错误:

由于未捕获的异常'NSRangeException'而终止应用程序,原因:' * - [__ NSArrayM insertObject:atIndex:]:索引2超出空数组的边界'

我试着保留阵列,这没关系(并且应该没关系).

索引是正确的,计数是否正确,有什么不对?

iphone objective-c nsmutablearray ios

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

用于删除NSMutableArray崩溃中的项目的快速枚举

我有一个奇怪的问题,如果我在forin枚举中删除我的项目,它会崩溃,所以像这样:

for (Obstacle *obstacleToTrack in _obstaclesToAnimate) {
    //this if else not so important for happening crash
    if(obstacleToTrack.distance > 0){
        obstacleToTrack.distance -= _playerSpeed * _elapsed;
    }else{
        if (obstacleToTrack.watchOut) {
            obstacleToTrack.watchOut = NO;
        }
        obstacleToTrack.x -= (_playerSpeed + obstacleToTrack.speed) * _elapsed;
    }
    if (obstacleToTrack.x < -obstacleToTrack.width || _gameState == GS_OVER) {
        [self removeChild:obstacleToTrack];
        //this line makes crash happen , if remove this line code work fine
        [_obstaclesToAnimate removeObject:obstacleToTrack];
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我改变我的代码

NSMutableArray *forRemoving = [[NSMutableArray alloc]init];
for (Obstacle *obstacleToTrack in _obstaclesToAnimate) { …
Run Code Online (Sandbox Code Playgroud)

objective-c nsmutablearray fast-enumeration

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

为什么我可以将消息发送到NSArray的解除分配的实例?

我刚注意到一个令人惊讶的行为NSArray,这就是我发布这个问题的原因.

我刚刚添加了一个方法:

- (IBAction) crashOrNot
{
   NSArray *array = [[NSArray alloc] init];
   array = [[NSArray alloc] init];
   [array release];
   [array release];
}
Run Code Online (Sandbox Code Playgroud)

从理论上讲,这段代码会崩溃.但在我的情况下它永远不会崩溃!

我改变了NSArray,NSMutableArray但这次应用程序崩溃了.为什么会发生这种情况,为什么NSArray不崩溃和NSMutableArray崩溃?

memory-management nsmutablearray nsarray ios

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

如何保存/存档包含自定义对象的NSMutableArray?

我有一个NSMutableArray*recordsArray,键是NSStrings,值是一个自定义对象:

@interface DictRecord : NSObject{
}
@property (nonatomic, retain) NSString* word; 
@property (nonatomic, retain)  NSString  *wordStatus;
Run Code Online (Sandbox Code Playgroud)

Cocoa:如何保存/存档包含自定义对象的NSMutableArray

我想保存NSMutable数组,最好是非二进制(稍微可读)格式.

我已阅读文档并已将编码方法添加到DictRecord:

- (void) encodeWithCoder: (NSCoder *)coder
{
    [coder encodeObject: _word forKey:@"word" ];
    [coder encodeObject: _wordStatus forKey:@"wordStatus" ];
}
- (id) initWithCoder: (NSCoder *) coder
{
    self = [super init];
    if (self) {
        self.word = [coder decodeObjectForKey:@"word"];
        self.wordStatus = [coder decodeObjectForKey:@"wordStatus"];
}
Run Code Online (Sandbox Code Playgroud)

然后我尝试保存使用:

[recordsArray writeToFile:filePath atomically:YES];
Run Code Online (Sandbox Code Playgroud)

文件已保存,但我可以看到它是空的.

任何人都可以告诉我我省略了哪些步骤,或者我是否以错误的方式解决了这个问题.

谢谢

cocoa nsmutablearray nscoder

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

如何将NSMutableArray所需的项目复制到NSArray

我有NSMutableArray结果它有6个项目.我想将前三个内容复制到另一个NSArray.

iphone nsmutablearray

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

可变副本和其他创建方法之间的区别

我经常需要更改一个NSArray或一个的内容NSDictionary.通常我会这样:NSDictionary- >创建NSMutableDictionary并编辑它 - >用编辑过的原件替换原件NSDictionary(作为不可变的).

我知道有两种方法可以做到这一点:

1)使用mutable copy和copy:

NSDictionary *myDictionary = @{...};
NSMutableDictionary *dicToEdit = myDictionary.mutableCopy;
// Editing goes here`
myDictionary = dicToEdit.copy;
Run Code Online (Sandbox Code Playgroud)

2)使用arrayWithArray:或dictionaryWithDictionary:

NSDictionary *myDictionary = @{...};
NSMutableDictionary *dicToEdit = [NSMutableDictionary dictionaryWithDictionary:myDictionary];
// Editing goes here
myDictionary = [NSDictionary dictionaryWithDictionary:dicToEdit];
Run Code Online (Sandbox Code Playgroud)

这两种方式有什么区别吗?或者这两种方式中的一种有问题吗?

objective-c nsdictionary nsmutablearray nsarray nsmutabledictionary

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

从NSMutable Array中删除一个值

我有一个NSMutableArray名为_groupCategoryCurrentIds其格式的数据

(
        {
        id = 2;
        name = Fashion;
    },
        {
        id = 5;
        name = Leisure;
    },
        {
        id = 14;
        name = Clothing;
    },
        {
        id = 17;
        name = Sports;
    },
        {
        id = 2;
        name = Fashion;
    },
        {
        id = 36;
        name = Men;
    },
        {
        id = 34;
        name = Woodland;
    },
        {
        id = 30;
        name = Accessories;
    },
        {
        id = 4;
        name = Entertainment;
    },
        {
        id …
Run Code Online (Sandbox Code Playgroud)

objective-c nsmutablearray nspredicate ios

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

UITextview以文本中心对齐方式编写,快速

当我点击加粗按钮时,我有一个文本编辑器

我可以用粗体字写这是代码

txtEditor.typingAttributes = [NSAttributedStringKey.foregroundColor.rawValue: UIColor.black/, NSAttributedStringKey.font.rawValue: UIFont.boldSystemFont(ofSize: (txtEditor.font?.pointSize)!)]
Run Code Online (Sandbox Code Playgroud)

我想在“中心文本中心对齐”中单击一个按钮(我写的行)时需要一个按钮,而不是其他行

这是代码

let paragraph = NSMutableParagraphStyle()
paragraph.alignment = .center
Run Code Online (Sandbox Code Playgroud)

但是在将如何在UITextview中添加这2行代码以输入居中对齐之后呢?

uitextview nsattributedstring nsmutablearray ios swift

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