【发布时间】:2013-07-01 19:10:57
【问题描述】:
我有一个问题希望你能帮助我。我有一个带有多个故事板视图的应用程序,每个视图都有一个单独的视图控制器。我希望能够在故事板的所有视图中使用我自己的类。这将使每个视图控制器中的代码更清晰,整个应用程序更易于调试等。该类将包含变量和方法。
我的总体目标是通过按钮从用户那里收集数据,然后将这些数据存储在数据库中。可以查看和修改数据,以及生成统计数据。
由于大多数变量和方法将在不同的视图和不同的时间使用,我想将所有这些分开在单独的文件中。
我还可以告诉你,这不是我懒惰的捷径尝试,我已经在互联网上冲浪了很多很多小时,阅读了数百篇帖子等,但我仍然离解决方案还差得远。
非常感谢任何输入!
感谢您抽出宝贵时间阅读本文...
SomeClass.h 的代码如下:
#import <Foundation/Foundation.h>
@interface SomeClass : NSObject
{
NSString *dataOne;
NSString *dataTwo;
NSString *dataThree;
}
- (void) SetDataOne: (NSString*) dataOneReceived;
- (void) SetDataTwo: (NSString*) dataTwoReceived;
- (void) SetDataThree: (NSString*) dataThreeReceived;
- (void) saveSomeData;
@end
SomeClass.m 的代码如下:
#import "SomeClass.h"
@implementation SomeClass
- (void) SetDataOne: (NSString*) dataOneReceived {
dataOne = dataOneReceived;
}
- (void) SetDataTwo: (NSString*) dataTwoReceived {
dataTwo = dataTwoReceived;
}
- (void) SetDataThree: (NSString*) dataThreeReceived {
dataThree = dataThreeReceived;
}
- (void) saveSomeData {
// Here I do stuff with dataOne etc…
}
@end
SomeView.h 的代码如下:
#import <UIKit/UIKit.h>
#import "HeadViewController.h"
#import "SomeClass.h"
@interface SomeView : UIViewController
// contains stuff not needed to show here
- (IBAction)Done:(id)sender;
@end
SomeView.m 有以下代码:
#import "SomeView.h"
#import "SomeClass.h"
@interface SomeView ()
@end
@implementation SomeView
- (void)viewDidLoad
{
[super viewDidLoad];
SomeClass *someClassObject = [[SomeClass alloc] init];
// Do any additional setup after loading the view.
}
// Other standard methods omitted
- (IBAction)Done:(id)sender {
[someClassObject SetDataOne: @”whatever text”];
[someClassObject SetDataTwo: @”whatever text”];
[someClassObject SetDataThree: @”whatever text”];
[someClassObject SaveSomeData];
Error Msg for all the above: ”Use of Undeclared Identifier ’someClassObject’
}
@end
评论:您可以在上面的代码末尾看到我收到的错误消息。我不知道我做错了什么。我查看了很多关于如何创建和调用类的示例,但似乎无法解决我的问题。另外,我看到一些“SomeClass *someClassObject = [[SomeClass alloc] init];”在“main.m 文件”中。如果我理解正确,该文件是应用程序启动时第一个加载的文件。如果是这样,那么我不能把它放在那里,因为我必须在几个不同的视图中创建我的类的实例,而不是应用程序启动时的其他时间。这就是为什么我把它放在 viewDidLoad 方法中。
【问题讨论】:
-
“该文件是应用程序启动时第一个加载的文件” - 我建议您在尝试深入 iOS 开发之前先退一步学习 C。不加载文件,而是调用函数,
main()是第一个。 -
缩小您的问题范围并删除不必要的代码 sn-ps。以目前的形式,这是一个无处可去的问题。
-
我觉得你需要找几本关于编程的好书。 “上网几个小时”不是学习编程的方式。
-
Hot Licks - 你对一本适合初学者但非常详细的好书有什么建议吗?
标签: objective-c class ios6 instance