如果可能的话,我想改进这种方法:这是一个小部分,可以保存所有文本字段(目镜,物镜等)文本。不幸的是,我的应用程序的每个部分必须多次这样做很容易出错,所以我想改进它。我正在考虑某种快速枚举,其方法的参数是文本字段等,我可以将所有键都放在字典中(已经设置好了)。只是一个指向正确文档的指针,或许,某种适合你的过程将会非常棒!
-(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"];
}
感谢您抽出宝贵时间阅读本文!
答案 0 :(得分:2)
我将尝试基于OOP解决方案回答这个问题。
创建一个方法,接受这些文本框作为参数的任何类型对象,将所述对象的引用发送到方法,并以您知道的类似方法保存条目。这样可以避免您担心的“复制和粘贴”错误。
如果cocoa应用程序的工作方式类似于Java和.NET(我真的不知道),你应该能够循环遍历所存在的所有对象的实例。我只知道必须有一种方法来遍历应用程序域中单个对象的每个实例。
如果这是.NET,我只是建议使用TextBox.Name和TextBox.String来使其成为一个通用方法,可用于保存发送给它的任何TextBox的属性。如果这不能解决你的问题(评论有点长),那么我就会报警。