我在设置数据控制器的简单应用程序时遇到问题。我在BirdsListViewController.h中的行@property (strong, nonatomic) BirdsListDataController *dataController;
上收到错误。我尽力使用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的新手,所以希望我的代码不会太难以排除故障。谢谢你的帮助。
答案 0 :(得分:3)
对于寻找更好答案而非评论/取消注释代码的人来说,更好的解决方案是清理项目并删除派生数据。修复循环引用后,按键Command+Shift+K
将清除项目,或者您可以转到并选择Product->Clean
。
要删除派生数据,请打开管理器,单击“项目”选项卡,导航到侧栏中的项目。您应该在项目名称标题下看到“派生数据”。在右侧应该是一个删除按钮。如果已启用,则删除派生数据也可以删除挂起错误。
作为解释的方式,有时似乎Xcode与项目不同步,持有不再存在的错误。这在更新的版本中更好,但偶尔也会发生。
答案 1 :(得分:1)
我不确定是什么导致了您的问题,但有一些事情:
在您提供的代码中,没有理由不在BirdListViewController.h中导入BirdListDataController.h,因为在BirdListDataController.h中没有对BirdListViewControllers的引用。所以尝试用#import语句替换你的@class声明。
在BirdListDataController.h中声明@class BirdName,但在BirdListDataController.m中导入Bird.h而不是BirdName.h。看起来有些东西可能出错了,虽然我必须看到BirdName.h和Bird.h的代码才能确定。
答案 2 :(得分:0)
在我的情况下,我在不同的文件夹结构中有重复的类名,一旦我删除了新的类并以不同的方式命名,所有内容都重复了。
根据“shA.t”的评论,将其转化为实用的解决方案:
如果您评论/取消注释代码,或者如上所述清理项目 建议的答案,但仍然没有解决它:
采取措施回顾最近的班级变化并仔细检查 即使在不同的目录中,所有类名都是唯一的 检查
他们所有
对于这个特殊的重复类名称场景,这将为您省去导入和评论#import“class.h”的麻烦。