首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Swift的PFRelation中声明只读@NSManaged属性

在Swift的PFRelation中声明只读@NSManaged属性
EN

Stack Overflow用户
提问于 2015-08-17 00:25:17
回答 3查看 1.3K关注 0票数 10

我在我的Parse object store应用程序中使用了iOS,并且为我的Parse对象创建了一个自定义子类,它看起来有点像这样:

代码语言:javascript
复制
class MyThing: PFObject, PFSubclassing {

   // ...PFSubclassing protocol...

   @NSManaged var name: String
   @NSManaged var somethingElse: String
   @NSManaged var relatedThings: PFRelation

 }

relatedThings属性工作:我能够从商店中获取相关的对象。然而,我一直收到来自Parse的警告:

代码语言:javascript
复制
[Warning]: PFRelation properties are always readonly,
but MyApp.MyThing.relatedThings was declared otherwise.

在Objective中,我本可以轻松地将该属性标记为只读的,但我不知道如何在Swift中这样做以使警告保持沉默。

不允许与let结合使用var,而不允许使用@NSManaged

添加private(set)也没有任何效果:

代码语言:javascript
复制
@NSManaged private(set) var relatedThings: PFRelation

那么,Parse希望我如何声明关系属性呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-12-17 17:12:13

现在您应该使用:

代码语言:javascript
复制
var relatedThings: PFRelation! {
    return relationForKey("relatedThings")
}
票数 3
EN

Stack Overflow用户

发布于 2015-09-22 10:03:25

Tom's answer不适合我,因为PFObject不是NSManagedObject的子类,因此它没有实现willAccessValueForKeyprimitiveValueForKeydidAccessValueForKey方法。

然而,使用PFObject自己的objectForKey方法是正确的等效解决方案:

代码语言:javascript
复制
var relatedThings: PFRelation! {
    return objectForKey("relatedThings") as? PFRelation
}

您仍然需要强制转换方法返回给PFRelation的值,或者,按照汤姆的版本,将属性的类型转换为可选的类型。

票数 2
EN

Stack Overflow用户

发布于 2015-08-20 21:19:17

下面是如何使用Swift创建只读核心数据属性的方法。我不知道这是不是帕斯想要的,但这就是斯威夫特的工作方式。

虽然Xcode在属性上生成带有NSManagedObject@NSManaged子类,但实际上并不是必需的。可以用等效的Swift计算属性替换@NSManaged属性,这些属性使用核心数据基元访问器获取/设置属性值。您可以通过不包括一个setter来使该属性有效地只读。

这意味着用以下内容替换现有的relatedThings声明:

代码语言:javascript
复制
var relatedThings : PFRelation? {
    get {
        self.willAccessValueForKey("relatedThings")
        let things = self.primitiveValueForKey("relatedThings") as? PFRelation
        self.didAccessValueForKey("relatedThings")

        return things
    }
}

get代码将与使用@NSManaged时的工作方式相同。但是,由于没有set,该属性是只读的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32041247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档