1

可能であれば、この方法を改善したいと思います。これは、すべてのテキストフィールド(接眼レンズ、対物レンズなど)のテキストが保存される小さなセクションです。残念ながら、アプリの各部分でこれを何度も実行しなければならないことはエラーが発生しやすいので、改善したいと思います。メソッドの引数がテキストフィールドなどである、ある種の高速列挙を考えています。辞書(すでに設定されている)にすべてのキーを含めることができます。適切なドキュメントへのポインタ、またはおそらく、あなたのために働いたある種のプロセスは素晴らしいでしょう!

-(IBAction)saveUserEntries {


if (eyepiece.text != nil) {

    eyepieceString = [[NSString alloc] initWithFormat:eyepiece.text];
    [eyepiece setText:eyepieceString];
    NSUserDefaults *eyepieceDefault = [NSUserDefaults standardUserDefaults];
    [eyepieceDefault setObject:eyepieceString forKey:@"eyepieceKey"];
}
else {
    [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"eyepieceKey"];
}

if (objectiveLenses.text != nil) {

    objectiveLensString = [[NSString alloc] initWithFormat:objectiveLenses.text];
    [objectiveLenses setText:objectiveLensString];
    NSUserDefaults *objectiveDefault = [NSUserDefaults standardUserDefaults];
    [objectiveDefault setObject:objectiveLensString forKey:@"objectiveKey"];
}
else {
    [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"objectiveKey"];
}

お時間を割いていただきありがとうございます!

4

1 に答える 1

2

OOP ソリューションに基づいて、この質問に答えようとします。

これらのテキストボックスが引数としてどのタイプのオブジェクトでも受け入れるメソッドを作成し、そのオブジェクトの参照をメソッドに送信し、既知の同様のメソッドでエントリを保存します。これにより、心配している「コピー アンド ペースト」エラーを回避できます。

ココアアプリケーションがJavaや.NETと同じように機能する場合、存在する上記のオブジェクトのすべてのインスタンスをループできるはずです(私は本当に知りません)。アプリケーション ドメイン内の単一オブジェクトのすべてのインスタンスをループする方法が必要であることはわかっています。

これが .NET の場合、TextBox.Name と TextBox.String を、送信された TextBox のプロパティを保存するために使用できる汎用メソッドにすることをお勧めします。これがあなたの質問に答えない場合 (コメントには少し長かったです)、お詫び申し上げます。

于 2012-04-26T12:09:56.777 に答える