4

我在设置数据控制器的简单应用程序时遇到问题。我@property (strong, nonatomic) BirdsListDataController *dataController;在 BirdsListViewController.h 中遇到错误。我已尽力使用 BirdsListDataController 的 @class 声明,并尝试从 .h 文件中删除任何 #import 语句,并尝试删除循环 #import,您可以在 BirdsListViewController 顶部找到已注释掉的循环。 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 和 Objective C 还是很陌生,所以希望我的代码不会太糟糕而无法排除故障。谢谢您的帮助。

4

3 回答 3

3

对于寻找比注释/取消注释代码更好的答案的人来说,更好的解决方案是清理您的项目并删除您的派生数据。修复循环引用后,击键Command+Shift+K将清理您的项目,或者您可以转到并选择Product->Clean.

要删除派生数据,请打开管理器,单击项目选项卡,导航到侧栏中的项目。您应该在项目名称标题下看到“派生数据”。右边应该是一个说删除的按钮。如果启用,删除派生数据也可以消除挂起错误。

作为解释,有时 Xcode 似乎与项目不同步,坚持不再存在的错误。这在较新的版本中更好,但偶尔仍会发生。

于 2013-03-12T15:52:44.663 回答
1

我不确定是什么导致了您的问题,但有几件事:

  • 在您提供的代码中,没有理由不在 BirdListViewController.h 中导入 BirdListDataController.h,因为在 BirdListDataController.h 中没有对 BirdListViewControllers 的引用。所以尝试用#import 语句替换你的@class 声明。

  • 在 BirdListDataController.h 中声明 @class BirdName,但在 BirdListDataController.m 中导入 Bird.h 而不是 BirdName.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 回答