如何为一种类型的对象创建一个类?
问题描述:
好的,我仍然习惯于Objective-c的工作方式。如何为一种类型的对象创建一个类?
让我们假设我正在制作待办事项列表应用程序。而不是从plist中只是阅读并将其加载到一个表,有些人说,你应该创建一个类,让我们把它叫做ToDo
包含例如:
NSString *title;
NSString *description;
好,很好。现在我将如何使用这样的类从plist或其他东西加载我的数据?我不明白如何创建一个小班的帮助。任何人都可以向我解释这是如何工作的?
答
刚刚创造的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
这是一个相当广泛的问题,难以很好地回答,而不知道你的背景。你应该阅读[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
我理解这些概念,但我无法按照自己的意愿制定问题。基本上有些人创建一个**可重用的** todo类。有点有道理? – Yep 2011-06-13 20:59:35
“可重复使用”是什么意思? – 2011-06-13 21:02:22