如何避免复制和粘贴?

时间:2012-04-26 09:45:01

标签: cocoa fast-enumeration

如果可能的话,我想改进这种方法:这是一个小部分,可以保存所有文本字段(目镜,物镜等)文本。不幸的是,我的应用程序的每个部分必须多次这样做很容易出错,所以我想改进它。我正在考虑某种快速枚举,其方法的参数是文本字段等,我可以将所有键都放在字典中(已经设置好了)。只是一个指向正确文档的指针,或许,某种适合你的过程将会非常棒!

-(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"];
}

感谢您抽出宝贵时间阅读本文!

1 个答案:

答案 0 :(得分:2)

我将尝试基于OOP解决方案回答这个问题。

创建一个方法,接受这些文本框作为参数的任何类型对象,将所述对象的引用发送到方法,并以您知道的类似方法保存条目。这样可以避免您担心的“复制和粘贴”错误。

如果cocoa应用程序的工作方式类似于Java和.NET(我真的不知道),你应该能够循环遍历所存在的所有对象的实例。我只知道必须有一种方法来遍历应用程序域中单个对象的每个实例。

如果这是.NET,我只是建议使用TextBox.Name和TextBox.String来使其成为一个通用方法,可用于保存发送给它的任何TextBox的属性。如果这不能解决你的问题(评论有点长),那么我就会报警。