我正在使用swift和parse.com开发一个应用程序,但是我对应用程序的模型有疑问。
我有一个包含类别类的事件类。
这是我的类别类:
class Category : PFObject, PFSubclassing{
override class func load() {
self.registerSubclass()
}
class func parseClassName() -> String! {
return "Category"
}
var nameCategory:String="";
var image:String="";
private let KeyName:String = "label";
private let KeyImage:String = "image";
func fromPFObject(object:PFObject)->Category{
self.nameCategory = object[self.KeyName] as String;
self.image = object[self.KeyImage] as String;
return self;
}
这是我的活动类:
class Event {
//Variables de classe
var name:String;
var category:Category;
// Descripteur de colone en base
private let KeyEventName:String = "event_name";
private let KeyCategory:String = "category";
func insert(){
var event = self.toPFObject()
event.saveInBackgroundWithBlock {
(success: Bool!, error: NSError!) -> Void in
if (success != false) {
println("Object created with id: \(event.objectId)")
self.id = event.objectId;
} else {
println(error)
}
}
}
func select(id:String){
var query = PFQuery(className: self.KeyClassName)
query.getObjectInBackgroundWithId(id) {
(event: PFObject!, error: NSError!) -> Void in
if (error == nil) {
self.fromPFObject(event);
} else {
println(error)
self.eventKO("Une erreur c'est produite");
}
}
}
func toPFObject()->PFObject{
var event = PFObject(className: self.KeyClassName)
event[self.KeyCategory] = self.category;
event[self.KeyEventName] = self.name
return event;
}
func fromPFObject(event:PFObject)->Event{
self.activ = event[self.KeyActif] as Int;
var test = event[self.KeyCategory] as PFObject;
var label = test["label"] as String;
self.category = event[self.KeyCategory] as Category;
self.name = event[self.KeyEventName] as String;
return self;
}
我很好地检索了事件的名称而不是类别。我在模特中遗漏了一些东西。
你有什么想法吗?
答案 0 :(得分:1)
我发现直接使用对象而不是子类化更简单。
只需在课程中引用属性,如下所示:
// non optional of type String that defaults to an empty string
let firstName = object["firstName"] as? String ?? ""
如果你有链接类,例如如果Category是您引用的另一个类,则以下工作干净利落
if let category = object["category"] as? PFObject {
let name = category["name"] as? String ?? ""
}
同样,不需要为简单对象子类化所有内容。
我已经使用这种模式来填充PFQueryTableViewControllers,自定义表格,自定义视图等。