Project 2: Sci-Fi Quotes 第二个项目:科幻引文
现在你应该已经知道 Objective-C 里面的类是怎么运作的了,是时候检验一下你新获得的知识喽。上一个拼字游戏的应用相对简单一些,而这个科幻引文会用到你学到过的类、属性、方法、泛型、放空特性修饰符,甚至会有新的知识点哟。
在这个应用里面,我们会加载一个 quotes.txt 文件,待会儿我就会把这个文件给你。这个文档里的每一行都是一句摘自科幻小说的名句,我们要把这些句子当成一个个对象放进数组里面,每一个对象有引言和作者这两个属性。当所有数据都加载完毕之后,我们会创建 printQuote 方法,随机选择一条引用语,并且把它打印出来。
如果你可以自己完成这件程序,就再好不过啦。可以看看下面的贴心小提示哦:
- 创建一个 SFApp 类来加载数据,打印引言。
- 创建一个 SFQuote 类来把每一句话转换成对象。
- 我在这个程序里用了 "SF" 来表示我自己的类,你也可以用专属于你自己的符号。
- 合理使用 NS_ASSUME_NONNULL_BEGIN 和 NS_ASSUME_NONNULL_END。
- 加入错误检查机制,例如:如果程序没有加载文件就应该自动退出;如果文档里有一行文字格式不对,就不应该被加载。
好了,我们正式开始。现在我们还是创建一个新的命令行项目,命名为 SciFiQuotes。你可能还不知道怎么从本地加载文件,可以把下面这段代码写到 main.m 文件里:
#import <Foundation/Foundation.h>
#import "SFApp.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSArray *paths = NSSearchPathForDirectoriesInDomains
(NSDesktopDirectory, NSUserDomainMask, YES);
NSString *desktopPath = [paths objectAtIndex:0];
SFApp *app = [[SFApp alloc] initWithFile:[desktopPath
stringByAppendingPathComponent:@"quotes.txt"]];
[app printQuote];
}
return 0; }
这里你可以自己完成这个应用程序,也可以跟着下面的步骤一步一步走。在此之前还有一件事情要做,在桌面上新建一个文本文档,把下面的内容保存到文档里,然后把文档命名为 quotes.txt。
In my experience, there is no such thing as luck./Obi-Wan Kenobi Do what I do: hold tight and pretend it’s a plan!/The Doctor The needs of the many outweigh the needs of the few./Spock If we’re going to be damned, let’s be damned for what we really are./Jean-Luc Picard Do, or do not. There is no try./Yoda I swear by my pretty floral bonnet, I will end you./Malcom Reynolds
注意一下,每一个引用的句子跟它的作者之间有一个斜线,这更利于加载数据。
现在是你大展身手的机会啦~