【问题标题】:How to avoid copy and pasting?如何避免复制和粘贴?
【发布时间】:2012-04-26 09:45:00
【问题描述】:

如果可能的话,我想改进这个方法:这是一个保存所有文本字段(目镜、物镜等)文本的小部分。不幸的是,我的应用程序的每个部分都必须多次这样做很容易出错,所以我想改进它。我正在考虑使用文本字段等方法的参数进行某种快速枚举,并且我可以拥有字典中的所有键(已经设置)。只需一个指向正确文档的指针,或者某种对您有用的过程,就太棒了!

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

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

【问题讨论】:

  • 好像已经是一个方法了,命名为saveUserEntries
  • 抱歉,我显然没有说得很清楚,在实际方法中,我必须复制 if-else 语句并为所有不同的文本字段编辑每个语句。这很容易出错,我想要一种可以在其他地方重用的方法,也许可以使用参数

标签: cocoa fast-enumeration


【解决方案1】:

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

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

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

如果这是 .NET,我只是建议 TextBox.Name 和 TextBox.String 使其成为一种通用方法,可用于保存发送给它的任何 TextBox 的属性。如果这不能回答您的问题(评论有点长),那么我很抱歉。

【讨论】:

  • 感谢@Ramhound 的努力。这确实是有道理的,所以我将在今天晚些时候尝试实现它:) 我因一个措辞糟糕的问题而被打分,所以感谢您抽出时间来回答。
  • @RobW - 我希望我能给你一个更直接的 Coca 响应,代码很容易理解,我只知道 Coca 如何处理 Java 中的“控件”(即 TextBox )并且 .NET 应用程序中的所有控件都继承了一个类(非常简单的描述)。
  • 没有办法遍历应用程序中存在的类的每个实例(神圣封装违规,蝙蝠侠),但没有理由提问者不能简单地调用他们的fillInField:withPreferencesValueForKey: 方法一次用于目镜场,然后再次用于物镜场。
  • @PeterHosey - 学习另一种语言的语法总是很好。我不确定你是否理解我的建议。可以循环遍历 WPF Windows/Win32 Form/Group/Ect 上的控件,这样做没有任何问题(取决于所讨论的控件数量)。
猜你喜欢
  • 2019-06-07
  • 2014-03-03
  • 1970-01-01
  • 1970-01-01
  • 2011-03-05
  • 1970-01-01
  • 1970-01-01
  • 2012-02-17
  • 2018-04-13
相关资源
最近更新 更多