dynamic - swift : Parse subclass dynamic var dont get included when retrieving object

标签 dynamic swift parse-platform subclass pfobject

从 Parse Data Browser 检索对象时,我无法获取对象属性。这是在我从“@NSManaged var friends”更改为“dynamic var friends”之后发生的。甚至“名称”在 User.logInWithUsernameInBackground block 中也显示为 nil,这很疯狂,因为登录成功了。用户的 ACL 设置为“公共(public)读取”。

用户对象:

class User : PFUser, PFSubclassing {

    dynamic var friends:[User]!
    dynamic var name:String!

     override class func load() {
        self.registerSubclass()
    }
}

检索用户和 friend 。 println 显示为 nil

var query = User.query()
query.includeKey("friends")
query.getObjectInBackgroundWithId(currentUser.objectId) {
    (pfObject: PFObject!, error: NSError!) -> Void in
    if pfObject != nil {
        var user = pfObject as User
        var friends = user.friends as [User]
        println("friends: \(friends)") //nil
   } else {
        println(error)
   }
}

登录。 println 显示为 nil

User.logInWithUsernameInBackground(USERNAME, password:PASSWORD) {
        (user: PFUser!, error: NSError!) -> Void in
        if user != nil {
            println("Logged in with user: \(user.name)") //nil
        } else {
            println(error)
        }
    }

最佳答案

对您来说更深入一点,障碍似乎是对 Swift 中的 dynamic 修饰符的作用的误解。显然,Swift 中的 dynamic 用于键值观察,而不是声明要在运行时定义的变量访问器(@dynamic 在 Objective-C 中的作用)

有关 Swift 中 dynamic 的描述,请参阅此 https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/BuildingCocoaApps/AdoptingCocoaDesignPatterns.html#//apple_ref/doc/uid/TP40014216-CH7-XID_8

这是为了描述为什么 @NSManaged 的​​工作方式与 @dynamic 在 Objective-C 中的工作方式相同 https://developer.apple.com/library/prerelease/mac/documentation/Swift/Conceptual/BuildingCocoaApps/WritingSwiftClassesWithObjective-CBehavior.html#//apple_ref/doc/uid/TP40014216-CH5-XID_66

关于dynamic - swift : Parse subclass dynamic var dont get included when retrieving object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25724955/

相关文章:

ios - Parse.com 关注/关注者逻辑

ios - 如何从 iOS 应用程序访问 Parse 函数返回的数组中的值

c# - 使用 Javascript 和 C# 动态搜索数据库并显示结果

jquery - $.ajax 不每次都从服务器加载数据

c - C中的动态数组push()导致Valgrind错误

ios - 类型 'GameViewController' 不符合协议(protocol) 'FBSDKLoginButtonDelegate'

php - 为 Php 解析 API

jQuery .click() 不会在使用 .wrapInner() 动态创建的链接上触发

ios - Github ImageSlideShow 库在 Swift 中的实现

ios - 在没有子类化的情况下将触发的操作绑定(bind)到函数