基于IPhone导航的应用模型

时间:2010-11-07 01:18:16

标签: objective-c ios4

我正在为iPhone做一个基于导航的应用程序,我从一个大的名单(大约100)开始,我想知道什么是最快,最有效的方式来改变内容根据什么名称用户在列表中点击。

现在我根据标题的内容更改内容:

NSString *comparisonString = @"Bill Clinton";
NSString *comparisonString2 = @"Bob Dole";
 if (self.title == comparisonString) {
  NSString *alterString = [NSString stringWithFormat: @"He is a democrat from North Carolina "];
  [appDelegate setModelData:alterString];
 }
 else if (self.title == comparisonString2) {
  NSString *alterString = [NSString stringWithFormat: @"He was born into a family in New York City... "];        
  [appDelegate setModelData:alterString];
 }

这是最好的方法吗?似乎很多代码都会被重复。我是Objective-C的新手,为iPhone开发,任何建议都会对我有所帮助。谢谢!

1 个答案:

答案 0 :(得分:1)

到目前为止,您在这两个条件中所写的内容与此相同(没有if语句):

NSString *alterString = [NSString stringWithFormat: @"Content for %@!", self.title];
[appDelegate setModelData:alterString];

希望有所帮助。

你所做的只是改变if和else语句中字符串的相同部分(以后可能更多的其他语句)

修改

好的,现在看一下编辑过的问题,你现在基本上都有一个查找表。所以self.title是关键,你想用它来查找另一个字符串。

执行此操作的一种方法是使用将每个名称映射到字符串的字典创建一个plist。然后加载该plist并从那里查找名称。像这样:

NSDictionary* people = [NSDictionary dictionaryWithContentsOfFile:pathToThePlist];
NSString *content = [people objectForKey:name];

(顺便说一句,现在你正在使用'=='进行字符串比较,你想在将来使用 - [NSString isEqualToString:]。