-2

問題があるので、助けていただければ幸いです。複数のストーリーボード ビューを持つアプリがあり、それぞれに個別のビュー コントローラーがあります。ストーリーボードのすべてのビューで独自のクラスを使用できるようにしたいと考えています。これにより、各ビューコントローラーのコードがよりクリーンになり、アプリ全体のデバッグが容易になります。クラスには変数とメソッドが含まれます。

私の全体的な目的は、ボタンを介してユーザーからデータを収集し、データベースに保存することです。データの表示と修正、および統計の生成が可能になります。

ほとんどの変数とメソッドはさまざまなビューでさまざまなタイミングで使用されるため、これらすべてを別のファイルに分けたいと思います。

また、これは私からの怠惰な近道の試みではないことも言えます。私はインターネットを何時間もサーフィンして何百もの投稿などを読んでいますが、まだ解決策にはほど遠い.

どんな入力でも大歓迎です!

これを読んでくれてありがとう...

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 メソッドに配置しました。

4

3 に答える 3

0

次のように、各ヘッダー ファイルのインターフェイス セクション内にオブジェクトを追加する必要があります。

SomeView.h

#import <UIKit/UIKit.h>
#import "HeadViewController.h"
#import "SomeClass.h"


@interface SomeView : UIViewController
{
 SomeClass *someClassObject;
}

// contains stuff not needed to show here

- (IBAction)Done:(id)sender;

@end

次に、someClassObjectViewDidLoad 内でインスタンス化すると、そのビュー全体で永続化されます。

于 2013-07-01T20:17:43.973 に答える
0

someClassObject は viewDidLoad 内に設定されており、ビュー内のどこにも格納されていないため、まったく同じメソッドの最後に削除されます

于 2013-07-01T19:19:01.820 に答える