Starting small: SFQuote 先完成一小步

做项目的时候,我个人比较喜欢先从小的功能开始,逐渐把它们连成大的项目。在这个项目里,我们先新建一个类来保存引用的文字和作者。当然啦,所有的功能都可以写在一个文件里,但是我有点点代码洁癖啦,所以会新建一个类来放这些数据。

我们来新建一个类,点击 File > New > File,然后选择 OS X > Source > Cocoa Class,最后把它命名为 SFQuote。

这个类里面要写两个 NSString 属性,text 和person。我也会自定义初始化器,把它命名为 initWithLine,这个初始化器从文档里面获取文字,然后分别初始化 text 和 person。

首先来写 SFQuote.h:

NS_ASSUME_NONNULL_BEGIN
@interface SFQuote : NSObject
@property NSString *text;
@property NSString *person;
- (nullable instancetype)initWithLine:(NSString*)line;
@end
NS_ASSUME_NONNULL_END

你可以看到我直接把 NS_ASSUME_NONNULL_BEGIN 放在这里了,因为在里面,除了初始化器之外,所有属性和方法都是不能为空的。至于初始化器为什么可以返回空值,等一下你就知道了。

接着在实现文件里自定义初始化器,首先把一整行文字加载进来,然后用 componentsSeparatedByString 方法根据斜线的位置来分割对象,最后把值返回到数组里。如果这一行文字并不包含 text 和 person 这两个内容,就判定无效,返回 nil。这个。如果判定有效,就把它们分成两个属性来储存。

下面就是我的实现文件的代码:

@implementation SFQuote
- (instancetype)initWithLine:(NSString*)line {
    if (self = [super init]) {
        NSArray *split = [line componentsSeparatedByString:@"/"];
        if ([split count] != 2) {
            return nil;
}
        self.text = split[0];
        self.person = split[1];
    }
    return self;
}
@end

results matching ""

    No results matching ""