0

我知道这个话题之前已经做过,但出于特定原因我想再次提出它,我有一个函数旨在将一个项目从一个数组移动到另一个数组,从它最初所在的数组中删除该项目,但无论何时我测试了一下,好像不行

-(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;

}
4

2 回答 2

0

您可能没有在适当的时间将_currentHand变量设置为 nil,因此您可能没有正确的当前手牌,这可能使其“看起来”像是数组交换的问题。

于 2012-07-27T18:22:33.810 回答
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
于 2012-07-27T18:01:31.070 回答