标签: fast-enumeration

通过NSArray迭代

有人可以帮我修复我的代码.我试图做一些简单的迭代遍历整个数组,其中包含NSString,将它们转换为NSIntegers并将它们分配给NSInteger变量.

 for  (NSInteger *itemF in myNSArray) {
     //WHERE "slotA" is an NSInteger and "itemF" is stored as an NSString and I wanna conver to NSInteger 
     //and store is in the var.
     slotA=itemF;          
}  
Run Code Online (Sandbox Code Playgroud)

objective-c nsarray fast-enumeration

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

如何通过iOS上的UITextFields进行枚举

通过子视图枚举查找文本字段的正确方法是什么?

NSMutableArray *mutableTFs = [[NSMutableArray alloc] init];

for (UIView *view in [self.view subviews]) {
    if ([view isKindOfClass:[UITextField class]]) {            
        [mutableTFs addObject:view];
    }
}
Run Code Online (Sandbox Code Playgroud)

要么

NSMutableArray *mutableTFs = [[NSMutableArray alloc] init];

for (UITextField *textField in [self.view subviews]) {
    [mutableTFs addObject:textField];
}
Run Code Online (Sandbox Code Playgroud)

我知道这不是正确的措辞,但我不明白的是,如果它是顶级方法,你如何将它从视图转换为文本字段?

uitextfield uiview fast-enumeration ios

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

包含不同类型对象的数组的快速枚举

如果我有一个NSMutableArray,我添加了不同类的对象(例如NSString,NSMutableString,NSProcessInfo,NSURL,NSMutableDictionary等)现在我想快速枚举这个数组,所以我试过:

for (id *element in mutableArray){
   NSLog (@"Class Name: %@", [element class]);
   //do something else
}
Run Code Online (Sandbox Code Playgroud)

我在Xcode中发出警告说

warning: invalid receiver type "id*"
Run Code Online (Sandbox Code Playgroud)

我该如何避免这种警告?

objective-c fast-enumeration

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

Objective-C快速枚举冒泡排序

我正在尝试将一些GCD集成到我的代码中,并且发现严重的瓶颈是我在大型数组中的对象之间执行的泡泡比较.这是原始代码:

NSUInteger count = [arrayToDoWorkOn count];
for (int i = 0; i < count; i++)
{
    for (int j = i + 1; j < count; j++)
    {
        [[arrayToDoWorkOn objectAtIndex:i] compare:[arrayToDoWorkOn objectAtIndex:j]];
    }
}
Run Code Online (Sandbox Code Playgroud)

让我的漂移?因此,许多其他快速枚举任务可以通过转换轻松进行GCD

for (id obj in array)
{
    [obj aMessage:stuff];
}
Run Code Online (Sandbox Code Playgroud)

至:

[array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop)
{
    [obj aMessage:stuff];
}];
Run Code Online (Sandbox Code Playgroud)

有没有办法将我的前瞻 - sorta-bubble-sorta-algorithm-thing转换为可以提供给GCD块实现的东西?

objective-c fast-enumeration objective-c-blocks

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

快速枚举排序

for (id object in array) {
    // do something with object
}
Run Code Online (Sandbox Code Playgroud)

保证按照它们放入数组的顺序返回对象?

iphone cocoa-touch objective-c fast-enumeration ios

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

用于删除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
查看次数

我不熟悉的循环奇怪:"for(id*in*)"

如果这个问题非常简单,我很抱歉,但我已经用Google搜索过疯狂,无法找到合适的解释.

for (id line in self.lines){
    [linesCopy addObject:[line copyWithZone:zone]];
}
Run Code Online (Sandbox Code Playgroud)

我只是在学习Objective-C,这是一种for我以前从未见过的循环形式.我对这个简单很熟悉

for (int x = 1, x < 10, x++)
Run Code Online (Sandbox Code Playgroud)

for循环的风格.

for-loop objective-c fast-enumeration

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

这个2x快速枚举的更好解决方案?

我循环遍历一个数组,并将此数组中的objects标记属性与另一个数组中的对象进行比较.

这是我的代码:

NSArray *objectsArray = ...;
NSArray *anotherObjectArray = ...;
NSMutableArray *mutableArray = ...;

for (ObjectA *objectA in objectsArray) {
    for (ObjectZ *objectZ in anotherObjectArray) {
        if ([objectA.tag isEqualToString:objectZ.tag]) {
            [mutableArray addObject:objectA];
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?

请注意,该tag属性不是整数,因此必须比较字符串.

objective-c nsarray fast-enumeration

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

我们是否在快速枚举中释放了一个参数

我们在快速枚举中释放一个参数吗?因此,此代码是准确的:

    for (MKCircle *circle in localOverlays) {

    [mapView addOverlay: circle];

    [circle release]; // Is it perfectly alright to call this?
}
Run Code Online (Sandbox Code Playgroud)

我只是想知道,我第一次使用快速枚举!

loops objective-c fast-enumeration

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

如何在不知道索引的情况下检查NSMutableArray中是否存在对象,并在iOS中替换它(如果存在)?

我有一个NSMutableArray包含Person类型的对象.Person对象包含NSString*name,NSString*dateStamp和NSString*testScore的参数.我想用快速枚举做的是检查NSMutableArray*testResults,查看是否存在具有相同名称参数的对象.

如果确实如此,那么我想NSMutableArray用我将要插入的具有dateStamp最新值的对象和testScore值替换现有对象.如果找到没有匹配name参数的对象,则只需插入我拥有的对象.

到目前为止,我的代码如下所示:

这是创建我要插入的对象的代码:

Person *newPerson = [[Person alloc] init];
    [newPerson setPersonName:newName]; //variables newName, pass, and newDate have already been 
    [newPerson setScore:pass];      //created and initialized
    [newPerson setDateStamp:newDate];
Run Code Online (Sandbox Code Playgroud)

这里是我尝试迭代NSMutableArray以查看是否已存在具有相同名称参数的对象的代码:

for (Person *checkPerson in personList) { //personList is of type NSMutableArray

        if (newPerson.newName == checkPerson.name) {

           //here is where I need to insert the code that replaces checkPerson with newPerson after a match has been found   


        }

        else …
Run Code Online (Sandbox Code Playgroud)

nsmutablearray fast-enumeration ios

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

Objective-C快速枚举搜索不会中断

我正在尝试在树中找到匹配的对象,所以我正在使用ObjC快速枚举.问题是我的方法找到匹配的值,命中返回行,然后将值设置为nil并继续迭代.这是我的方法:

+ (INONode *)findByUUID:(NSString*)uuid fromRootNode:(INONode*)node
{    
    for (INONode * childNode in [node children]) {
        if ([[node uniqueID] isEqualToString:uuid]) {
            break;
        }
        else {
            [INONode findByUUID:uuid fromRootNode:childNode];
        }
    }

    return node;
}
Run Code Online (Sandbox Code Playgroud)

当我通过设置断点来执行代码执行时,会触发中断,然后转到返回行,然后返回到继续迭代的语句.我在这里错过了什么?

cocoa objective-c fast-enumeration

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

如何使用Objective-C中的两个NSArray快速枚举来填充NSDictionary?

我有两个数组,一个保存键值(myKeys),另一个保存NSString对象(myStrings).我想使用两个数组来使用快速枚举来填充单个NSDictionary(myDictionary),但我不确定如何?

for (NSNumber *key in myKeys) {

   [self.myDictionary setObject @"here is where the value should go from the 'other' array forKey: key];

}
Run Code Online (Sandbox Code Playgroud)

我如何在这里考虑NSArray对象?

for-loop objective-c nsdictionary fast-enumeration

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

Objective-C可以使用快速枚举代替"for(i = 0; i <X; i ++)"

假设我有一个基本的整数迭代,如下所示:

NSInteger rowCount = self.rowCount;
for (int i = 0; i < rowCount; i++) {
    // stuff!
}
Run Code Online (Sandbox Code Playgroud)

有没有办法使用快速枚举块来实现它?我当然可以创建一个整数数组0 - self.RowCount,但这似乎并不像这样做那么高效.

objective-c fast-enumeration objective-c-blocks

-3
推荐指数
1
解决办法
58
查看次数