cómo mover un objeto de una matriz a otra

Entiendo que este tema se ha tratado antes, pero quería volver a mencionarlo por una razón específica, tengo una función diseñada para mover un elemento de una matriz a otra, eliminando el elemento de la matriz en la que estaba originalmente, pero siempre que Lo pruebo, no parece funcionar

-(void) moveOpperand: (NSMutableArray *) moveFrom :(NSMutableArray *) moveTo{
    NSString *opperandObject = [moveFrom lastObject];
    if (opperandObject) {
    [moveTo addObject:moveFrom.lastObject];
        [moveFrom removeLastObject];
    }
}

el método anterior se llama en este método

-(NSMutableArray *) giveHand: (NSMutableArray *) hand : (NSMutableArray *)refrenceDeck{

    for (int i=0; i<6; i++) {
        [self moveOpperand:refrenceDeck :hand];
    }
    return hand;
}

el error al probar parece estar ubicado cuando trato de implementar el método currentHand

-(NSMutableArray *) currentHand{
    if (_currentHand == nil) {

        self.currentHand = [self.myDeck giveHand:self.currentHand :self.myDeck.currentDeck];

    }
    return _currentHand;

}

preguntado el 27 de julio de 12 a las 18:07

¿cómo, en concreto, no funciona? -

Por favor, indique el problema. ¿Por qué 'parece' que no funciona? -

Como dijo Dustin cual es tu objetivo y como no lo estan cumpliendo? -

mi objetivo era eliminar un objeto del movefrom y agregarlo al moveto, sin embargo, no parece modificar ninguno de los NSMutableArrays que se le pasaron:

¿Podrías mostrar el código donde estás llamando a esto? -

2 Respuestas

Si está tratando de hacer lo que creo, aquí hay una categoría muy simple que debería hacerlo para cualquier objeto.

NSObject+Mover.h

#import <Foundation/Foundation.h>

@interface NSObject (Move)

/*
 Returns true if it sucessfully moves the object between arrays.
 */
- (BOOL)moveFromArray:(NSMutableArray *)arrayA toArray:(NSMutableArray *)arrayB;

@end

NSObject+Move.m

#import "NSObject+Move.h"

@implementation NSObject (Move)

- (BOOL)moveFromArray:(NSMutableArray *)arrayA toArray:(NSMutableArray *)arrayB
{
    if ([arrayA containsObject:self]) {
        [arrayA removeObject:self];
        [arrayB addObject:self];

        return YES;
    } else {
        return NO;
    }
}

@end

Respondido 27 Jul 12, 19:07

Es posible que no esté configurando el _currentHand variable a cero en el momento apropiado, por lo que es posible que no tenga la mano actual correcta, lo que puede hacer que "parezca" como un problema con el intercambio de matriz.

Respondido 27 Jul 12, 19:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.