如何将对象从一个数组移动到另一个数组

时间:2012-07-27 17:43:07

标签: objective-c nsmutablearray

我知道这个主题之前已经完成,但是我想再次提起它,原因有很多,我有一个功能,用于将项目从一个数组移动到另一个数组,从最初的数组中删除项目,但每当我测试它,它似乎没有工作

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

在此方法中调用上述方法

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

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

当我尝试实现currentHand方法

时,似乎找到了测试时的错误
-(NSMutableArray *) currentHand{
    if (_currentHand == nil) {

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

    }
    return _currentHand;

}

2 个答案:

答案 0 :(得分:0)

如果你正在尝试做我认为这是一个非常非常简单的类别,应该为任何对象做。

NSObject的+ Move.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

答案 1 :(得分:0)

您可能没有在适当的时间将_currentHand变量设置为nil,因此您可能没有正确的当前指针,这可能会使您看起来像是阵列交换的问题。 / p>