1

カスタム オブジェクトBalanceDataをに挿入しようとするNSMutableArrayと、次のエラーが表示されます。

No known class method for selector 'balnce'

私のコード:

- (void)insertNewObject:(id)sender
{
    if (!_balances) {
        _balances = [[NSMutableArray alloc] init];
    }
    [_balances insertObject:[BalanceData balance] atIndex:0]; // error occures here
    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
    [self.tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
}

MasterViewController.m上:

#import "MasterViewController.h"
#import "DetailViewController.h"
#import "BalanceData.h"

@interface MasterViewController () {
    NSMutableArray *_balances;
}
@end

@implementation MasterViewController

@synthesize balances = _balances;

どうすれば適切な方法でそれを行うことができますか?

4

2 に答える 2

2

クラス BalanceData は、balance メソッドを実装していません。この方法で呼び出す:

[BalanceData balance]

クラスメソッドを呼び出しています:

@implementation BalanceData
+ (id)balance
{ //implementation}

このクラス メソッドを BalanceData クラスに追加すると機能します。また、コレクション クラスでオブジェクトをオーバーライドisEqual:して使用する必要があります。hash

于 2013-03-07T10:38:04.223 に答える
1

あなたが提供したコードとエラーメッセージに基づいて、これは NSMutableArray とは何の関係もないようです...

ランタイムは、クラスBalanceDataが特定のメッセージに応答しないと不平を言っています。

だから:あなたは間違ったメソッドを呼んでいますか?または、インスタンス メソッドを呼び出すつもりですが、代わりにクラス メソッドとして呼び出していますか? または、意図的に Class メソッドを呼び出そうとしていますが、他の外部コードが参照できるように .h ファイルに入れていませんか?

これを単独で行で試してください:

[BalanceData balance];

ランタイムはこれ以上気に入らないと思います。これは、配列の相互作用ではなく、問題がここにあることを示しています。

于 2013-03-07T10:36:06.780 に答える