use*_*775 16 subclassing ios parse-platform swift
用于在PFObject子类上添加属性和方法的Parse文档在其示例代码中方便地跳过Swift语法,列出了Objective-C语法:
https://parse.com/docs/ios_guide#subclasses-properties/iOS
// Armor.h
@interface Armor : PFObject<PFSubclassing>
+ (NSString *)parseClassName;
@property (retain) NSString *displayName;
@end
// Armor.m
@dynamic displayName;
Run Code Online (Sandbox Code Playgroud)
有没有人想出一个解决Swift缺乏动态合成器的工作,以便用PFSubclassing实现属性和方法?我希望能够做到这样的事情:
class Armor : PFObject, PFSubclassing {
class func parseClassName() -> String! {
return "Armor"
}
}
var armor = Armor()
armor.displayName = "Iron Clad"
Run Code Online (Sandbox Code Playgroud)
小智 22
我有同样的问题.不得不将@NSManaged添加到我想保存的属性中:
class Armor : PFObject, PFSubclassing {
@NSManaged var displayName: String
class func parseClassName() -> String! {
return "Armor"
}
}
var armor = Armor.object()
armor.displayName = "Iron Clad"
Run Code Online (Sandbox Code Playgroud)
希望这在下次更新中得到解决.
And*_*oth 15
解决方案是使用计算属性而不是存储属性:
class Armor : PFObject, PFSubclassing {
var displayName: String? {
get {
return self["displayName"] as? String
}
set {
self["displayName"] = newValue
}
}
class func parseClassName() -> String {
return "Armor"
}
}
Run Code Online (Sandbox Code Playgroud)
Swift 1.2
第一步:创建一个swift文件并定义子类.别忘了导入Parse!(例如护甲)
import Foundation
import Parse
class Armor: PFObject, PFSubclassing {
// MARK: - PFSubclassing
override class func initialize() {
struct Static {
static var onceToken: dispatch_once_t = 0;
}
dispatch_once(&Static.onceToken) {
self.registerSubclass()
}
}
class func parseClassName() -> String {
return "Armor"
}
// MARK: - Parse Core Properties
@NSManaged var displayName: String?
}
Run Code Online (Sandbox Code Playgroud)
注意:您可以将属性定义为选项.Parse Core Manager中的每个"未定义"值都将转换为"nil".
第二:在AppDelegate.swift中注册所有子类.
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
// MARK: - Parse Setup
Parse.setApplicationId("YOUR_ID", clientKey: "YOUR_KEY")
// MARK: - Parse Register Subclasses
Armor.registerSubclass()
return true
}
Run Code Online (Sandbox Code Playgroud)
我遇到了同样的问题,但我应该注意你的类定义应该看起来更像这样:
class Armor : PFObject, PFSubclassing {
var displayName: String
class func parseClassName() -> String! {
return "Armor"
}
}
var armor = Armor()
armor.displayName = "Iron Clad"
Run Code Online (Sandbox Code Playgroud)
我尝试了一些不同的事情但没有成功。看起来 Parse SDK 尚不支持此功能,请记住,Parse iOS SDK 的当前版本早于 swift 发布的版本。听起来他们正在努力为即将发布的版本提供更好、更迅速的支持。
相反,您仍然可以创建 PFObject 子类(就像您所做的那样)并使用 访问数据.getObjectForKey("displayName"),或者编写您自己的类方法来访问此数据。最大的缺失实际上只是 SDK 通常为您创建的一些便捷方法。
| 归档时间: |
|
| 查看次数: |
8469 次 |
| 最近记录: |