iOS 7:在类型对象上找不到属性

时间:2013-12-15 01:08:34

标签: ios

我一直关注Apple的Start Developing iOS Apps Today指南并遇到了问题。我不是新手开发者,但我是iOS开发新手,我不明白为什么我会出错。

我有一个名为STRAddTodoViewController.h的文件,其中包含以下内容

#import <UIKit/UIKit.h>
#import "STRTodo.h"

@interface STRAddTodoViewController : UIViewController
@property STRTodo *todoItem;
@end

在我的STRTodosViewController.m中,我有:

- (IBAction)unwindToList:(UIStoryboardSegue *)segue {
    STRAddTodoViewController *addTodo = [segue sourceViewController];
    STRTodo *item = addTodo.todoItem;
    if (item != nil) {
        [self.todos addObject:item];
        [self.tableView reloadData];
    }
}

我收到的错误是:

Property 'todoItem' not found on object of type 'STRAddTodoViewController *'

出于某种原因,我在STRAddTodoViewController中的公共变量没有被我的其他控制器拿起,我不能为我的生活找出原因。有线索吗?

编辑:大家道歉,似乎我的项目中有两个STRAddTodoViewController副本,它在构建时正在阅读旧副本。这么简单的错误,我现在觉得自己像个大笨蛋,但感谢所有帮助过我的人。

2 个答案:

答案 0 :(得分:0)

尝试在#import "STRTodo.h"标头文件中将@class STRTodo;替换为STRAddTodoViewController.h,并在#import "STRTodo.h"实施文件中添加STRAddTodoViewController.m

因为如果#import "STRTodo.h"头文件中已经#import "STRAddTodoViewController.h"STRTodoViewController.h,编译器会发现#import "STRTodo.h"太多而感到困惑。

有帮助吗?

答案 1 :(得分:0)

你有: @property STRTodo *todoItem; 这意味着STRTodo确实是一个类。您的财产需要更多标识符。 @property (nonatomic, strong) STRTodo *totoItem;

除此之外,在-(id) init方法中,您还应该实例化该属性。

- (id) init{
    if (self = [super init]{
        self.todoItem = [[STRTodo alloc]init];
    }
    return self;
}

希望这有帮助。

编辑:没关系,似乎你找到了解决方案。