• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - Sprite Kit - 基于 NSMutableArray 对象列表删除 SKNode

[复制链接]
菜鸟教程小白 发表于 2022-12-12 09:44:09 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我在删除名称/ID 在我的 NSMutableArray 中的所有节点时遇到了一些麻烦。 我已将每个对象的值设置为唯一名称。所以我只能删除 NSMutableArray 中的那些。

对象在循环中创建,每个对象的名称都是唯一的。

像这样:

    myObject.name = @"8dAN3kgh6E";

下一个循环

    myObject.name = @"WsFkdGrmHm"; 

下一个循环

    myObject.name = @"ov5BjzHGiw"; 

然后将这些值相加并存储在一个数组中。

NSMutableArray *currentShapeArray

(
    8dAN3kgh6E,
    WsFkdGrmHm,
    ov5BjzHGiw
)

然后我循环遍历 currentShapeArray,我就是这样做的:

for (NSString *myObjectNames in currentShapeArray) {

      NSLog(@"%@", myObjectNames); //works and gives each value correctly
}

但是对于我的生活,我似乎无法弄清楚如何在这一点上删除包含该特定 node.name 的对象。

类似于 [myObject removeFromParent]; ...但我需要根据 myObject.name 属性进行选择。

我确信这很简单,希望有人可以帮助我朝正确的方向前进。谢谢!

更新:1.

我尝试了 sangony 的建议,由于某种原因,当我使用它时它给了我以下错误。

2014-05-07 23:11:56.163 dotmatcher[1149:60b] NODE NAME: FY7opRB1Wk
2014-05-07 23:11:56.164 dotmatcher[1149:60b] ButtonTmp 1
2014-05-07 23:11:56.164 dotmatcher[1149:60b] Previous 1
2014-05-07 23:11:56.164 dotmatcher[1149:60b] -[__NSCFString name]: unrecognized selector    sent to instance 0xee1fe50
2014-05-07 23:11:56.167 dotmatcher[1149:60b] *** Terminating app due to uncaught     exception 'NSInvalidArgumentException', reason: '-[__NSCFString name]: unrecognized selector     sent to instance 0xee1fe50'


- (void) touchesEndedNSSet *)touches withEventUIEvent *)event
{
for (UITouch *touch in touches) {

UITouch* touch = [touches anyObject];
CGPoint loc = [touch locationInNode:self];
NSArray *nodes = [self nodesAtPoint:loc];

for (SKNode *node in nodes) {

    NSString *tmp = node.name;
    if (tmp.length !=0) {
        NSLog(@"ended");

        NSString *buttonTmp = [node.userData objectForKey"buttonType"];

        if ([buttonTmp isEqualToString"1"] && [previousButton isEqualToString"1"]) {
            endButton = @"1";


            NSLog(@"NODE NAME: %@",node.name);
            NSLog(@"ButtonTmp %@", buttonTmp);
            NSLog(@"revious %@", previousButton);

            NSMutableArray *discardedItems = [NSMutableArray array];
            for(SKNode *object in currentShapeArray)
            {
                if([object.name isEqualToString:node.name])
                {
                    [object removeFromParent]; // not sure if you need this or not
                    [discardedItems addObjectbject];
                }
            }
            [currentShapeArray removeObjectsInArray:discardedItems];


            NSLog(@"ButtonID: %@",[node.userData objectForKey"buttonID"]);
            NSLog(@"ButtonType: %@",[node.userData objectForKey"buttonType"]);
            NSLog(@"ButtonColumn: %@",[node.userData objectForKey"buttonColumn"]);
            NSLog(@"ButtonRow: %@",[node.userData objectForKey"buttonRow"]);

            NSLog(@"AFTER REMOVE%@",currentShapeArray);

        }

    }
}
}
}

UPDATE 2 这是让它工作的最终代码。谢谢桑尼!

NSMutableArray *discardedItems = [NSMutableArray array];
for(SKNode *object in currentShapeArray)
{
        [object removeFromParent]; 
        [discardedItems addObjectbject];

}
[currentShapeArray removeObjectsInArray:discardedItems];



Best Answer-推荐答案


可能是这样的:

NSMutableArray *discardedItems = [NSMutableArray array];
for(SKNode *object in currentShapeArray)
{
    if([object.name isEqualToString:node.name])
    {
        [object removeFromParent]; // not sure if you need this or not
        [discardedItems addObjectbject];
    }
}
[currentShapeArray removeObjectsInArray:discardedItems];

关于ios - Sprite Kit - 基于 NSMutableArray 对象列表删除 SKNode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23525180/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap