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

適切なタイミングで変数をnilに設定していない可能性が_currentHandあります。そのため、現在のハンドが正しくないため、配列スワッピングの問題のように見える可能性があります。

于 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 に答える