2011-08-07 22 views
0

製品のビルドは成功しましたが、テストは失敗します。下にSTAssertEqualsの行に報告されたタイプミスマッチの失敗をどうやって渡すのですか?Xcode:Objective-C:タイプが一致しません

// TransactionSpec.m 

#import "Transaction.h" 

@interface TransactionSpec : SenTestCase 
@end 

@implementation TransactionSpec 

#pragma mark Properties 

- (void)testProperties { 
    Transaction *transaction = [[Transaction alloc] init]; 
    transaction.type = TransactionTypePay; 

    STAssertNotNil(transaction, @"transaction exists"); 
    STAssertEquals(transaction.type, TransactionTypePay, @"type property works"); // Type mismatch 
} 

@end 

// Transaction.h 

typedef enum { 
    TransactionTypePay, 
    TransactionTypeCharge 
} TransactionType; 

@interface Transaction : NSObject 

@property (nonatomic) TransactionType *type; 

@end 

// Transaction.m 

#import "Transaction.h" 

@implementation Transaction 

@synthesize type; 

@end 

答えて

2

あなたtypeプロパティは、おそらくtransaction.typeTransactionTypeへの修正問題を鋳造ので

+0

どのように宣言する必要がありますか?私はちょうど[''](https://github.com/enormego/UIKit/blob/af0df999735b29259b2a64342d616bc04bce54de/UITableView.h#L15-18)をたどった。 – ma11hew28

+0

ああ!とった!ありがとう! – ma11hew28

1

すべきではない列挙型へのポインタ、として宣言されています

STAssertEquals((TransactionType)transaction.type, TransactionTypePay, @"type property works"); 

しかし、なぜ私がすべき

@property (nonatomic) TransactionType *type; 
これを行う必要があります
+0

'type'の前にアスタリスク(*)を取り出してください。それで、あなたはそれを投げる必要はありません。 – ma11hew28

3

typeプロパティはポインタTransactionType(これはおそらく意図しない)ですが、TransactionTypePayは実際のTransactionTypeです。

+0

甘い!それは今通過する。ありがとう。愚かなエラー。 :) – ma11hew28

関連する問題