如何为一种类型的对象创建一个类?

问题描述:

好的,我仍然习惯于Objective-c的工作方式。如何为一种类型的对象创建一个类?

让我们假设我正在制作待办事项列表应用程序。而不是从plist中只是阅读并将其加载到一个表,有些人说,你应该创建一个类,让我们把它叫做ToDo包含例如:

NSString *title; 
NSString *description; 

好,很好。现在我将如何使用这样的类从plist或其他东西加载我的数据?我不明白如何创建一个小班的帮助。任何人都可以向我解释这是如何工作的?

+1

这是一个相当广泛的问题,难以很好地回答,而不知道你的背景。你应该阅读[Objective-C的面向对象编程](http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/OOP_ObjC/Articles/ooOOP.html%23//apple_ref/doc/uid/TP40005149-CH8-SW1)并尝试返回更具体的问题。 – 2011-06-13 20:57:52

+0

我理解这些概念,但我无法按照自己的意愿制定问题。基本上有些人创建一个**可重用的** todo类。有点有道理? – Yep 2011-06-13 20:59:35

+0

“可重复使用”是什么意思? – 2011-06-13 21:02:22

刚刚创造的NSObject与NSCoding协议的子类(如果您想将其保存在一个plist中)

例:* .h文件中

@interface ToDo : NSObject <NSCoding> { 

    NSString   *title; 
    NSString   *toDoDescription; 

} 
@property (copy) NSString   *title; 
@property (copy) NSString   *toDoDescription; 

@end 

例:* .m文件

@implementation ToDo 

@synthesize title, toDoDescription; 

- (id)init 
{ 
    if ((self = [super init])) { 
     [self setTitle:@"none"]; 
     [self setToDoDescription:@"none"]; 
    } 
    return self; 
} 

- (void)dealloc 
{ 
    [title release]; 
    [toDoDescription release]; 
    [super dealloc]; 
} 

// Next two methods and coding protocol are needed to save your custom object into plist 

- (id)initWithCoder:(NSCoder *)aDecoder 
{ 
    if ((self = [super init])) { 
     title = [[aDecoder decodeObjectForKey:@"title"] copy]; 
     toDoDescription = [[aDecoder decodeObjectForKey:@"toDoDescription"] copy]; 
    } 
    return self; 
} 

- (void)encodeWithCoder:(NSCoder *)aCoder 
{ 
    [aCoder encodeObject:title forKey:@"title"]; 
    [aCoder encodeObject:toDoDescription forKey:@"toDoDescription"]; 
} 

@end 

使用NSKeyedArchiver将对象转换为NSData。然后将它添加到plist。

+0

谢谢你的好代码。 – Yep 2011-06-18 14:01:44