4

簡単なアプリでデータコントローラーを設定するのに問題があります。@property (strong, nonatomic) BirdsListDataController *dataController;BirdsListViewController.hの行でエラーが発生します。BirdsListDataControllerの@class宣言を使用するように最善を尽くし、.hファイルから#importステートメントを削除し、BirdsListViewControllerの上部にコメントアウトされている循環#importを削除しようとしました。 h。簡単なことだと思います。

BirdsListViewController.h

#import <UIKit/UIKit.h>
@class BirdsListDataController;

@interface BirdsListViewController : UITableViewController <UITextFieldDelegate>
{
// NSMutableArray *listOfBirds;
IBOutlet UITextField *addNewBirdTextField;

}
//@property (nonatomic, retain) NSIndexPath *checkedIndexPath;
@property (nonatomic, retain) NSString *textLabelContents;
@property (nonatomic, retain) NSMutableArray *workingArray;
@property (strong, nonatomic) BirdsListDataController *dataController;
@property (strong, nonatomic) IBOutlet UITableView *birdListTableView;

@end

BirdsListViewController.m

#import "BirdsListViewController.h"
#import "BirdsListDataController.h"

@interface BirdsListViewController ()
@end

@implementation BirdsListViewController

- (id)initWithStyle:(UITableViewStyle)style
{
    self = [super initWithStyle:style];
    if (self) {
...

BirdsListDataController.h

#import <Foundation/Foundation.h>     
@class BirdName;

@interface BirdsListDataController : NSObject

@property (nonatomic, copy) NSMutableArray *listOfBirds;
-(NSUInteger)countOfList;
-(BirdName *)objectInListAtIndex:(NSUInteger)theIndex;
-(void)addBirdNameWithName:(BirdName *)bName;
@end

BirdsListDataController.m

#import "BirdsListDataController.h"
//#import "BirdsListViewController.h"
#import "Bird.h"

@implementation BirdsListDataController

-(id)init
{...

私はまだiOSとObjectiveCに本当に慣れていないので、うまくいけば、私のコードはトラブルシューティングするのにそれほどひどいものではありません。助けてくれてありがとう。

4

3 に答える 3

3

コードをコメント/コメント解除するよりも良い答えを探している人にとって、より良い解決策は、プロジェクトをクリーンアップし、派生データを削除することです。循環参照を修正したら、キーストロークでCommand+Shift+Kプロジェクトをクリーンアップするか、に移動して を選択できますProduct->Clean

派生データを削除するには、オーガナイザーを開き、[プロジェクト] タブをクリックして、サイドバーでプロジェクトに移動します。プロジェクト名のヘッダーの下に「派生データ」が表示されます。その右側には、削除というボタンがあります。有効になっている場合、派生データを削除すると、ハング エラーも削除されます。

説明として、Xcode がプロジェクトと同期しなくなり、存在しなくなったエラーを保持しているように見えることがあります。これは最近のバージョンでは改善されていますが、それでも時々発生します。

于 2013-03-12T15:52:44.663 に答える
1

何があなたの問題を引き起こしているのかはわかりませんが、いくつかのことがあります:

  • あなたが提示したコードでは、BirdListDataController.h に BirdListViewControllers への参照がないため、BirdListViewController.h に BirdListDataController.h をインポートしない理由はありません。@class 宣言を #import ステートメントに置き換えてみてください。

  • BirdListDataController.h では @class BirdName を宣言しますが、BirdListDataController.m では BirdName.h の代わりに Bird.h をインポートします。確かに知るには、BirdName.h と Bird.h のコードを確認する必要がありますが、何か問題があるようです。

于 2012-12-28T01:31:19.670 に答える
0

私の場合、異なるフォルダー構造に重複したクラス名がありました。新しいクラスを削除して別の名前を付けると、すべてが再び機能しました。

したがって、「shA.t」のコメントに従って、これを実用的なソリューションに変換するには:

コードをコメント/コメント解除するか、上記の回答が示唆するようにプロジェクトをクリーンアップしても解決しない場合:

  1. 最近のクラスの変更を振り返り、異なるディレクトリにある場合でもすべてのクラス名が一意であることを再確認してください。

    モール

  2. 重複するクラス名が見つかった場合: そのコードのバックアップを作成し、そのクラスを削除します (参照だけでなく、ゴミ箱にも)
  3. 一意の名前で新しいクラスを作成し、バックアップされたコードを組み込みます

この特定の重複したクラス名のシナリオでは、#import "class.h" をインポートしてコメントする手間が省けます。

于 2015-04-21T06:00:44.920 に答える