当前位置: 首页 > 面试题库 >

在Swift中设置NSManagedObject关系

闻人思聪
2023-03-14
问题内容

如何NSManagedObject在Swift 的子类中将对象添加到关系属性中?

在Objective-C中,当您NSManagedObject从数据模型以Xcode 生成子类时,会自动生成一个包含以下声明的类扩展:

@interface MyManagedObject (CoreDataGeneratedAccessors)

     - (void)addMySubObject: (MyRelationshipObject *)value;
     - (void)addMySubObjects: (NSSet *)values;

@end

但是,Xcode当前缺少Swift类的此类生成功能。

如果我尝试直接在Swift对象上调用等效方法:

myObject.addSubObject(subObject)

…我在方法调用中遇到编译器错误,因为这些生成的访问器不可见。

@NSManaged如文档中所述,我已将Relationship属性声明为。

还是我必须还原为具有关系的数据模型的Objective-C对象?


问题答案:

是的,这将不再起作用,Swift无法以这种方式在运行时生成访问器,这会破坏类型系统。

您要做的就是使用关键路径:

var manyRelation = myObject.valueForKeyPath("subObjects") as NSMutableSet
manyRelation.addObject(subObject)
/* (Not tested) */


 类似资料:
  • 我想在不同的情况下芳香地改变一些约束。 声明来自情节提要的约束: 这是我的代码,我想在其中更改约束: 但是约束仍然没有改变。 这是我的手机ForRowAt func: 提前感谢您的帮助!

  • 问题内容: 我正在为iPhone开发一个快速的应用程序。我的应用程序中有一个模式视图,我只想使用纵向视图。 我的问题是,如何以编程方式强制手机不允许旋转?换句话说,我正在寻找的代码不允许以横向模式显示模式视图(打开人像旋转锁定)。 这仅用于1模态视图,因此我无法关闭整个应用程序的旋转,否则我将完全禁用旋转。 我在这里的研究中找到了代码, 但如果有帮助,它在目标C中。谢谢! 问题答案: 您可以将这些

  • 我正在为iPhone开发一个swift应用程序。我的应用程序中有一个模态视图,我只想在纵向视图中。 我的问题是,如何通过编程强制手机不允许旋转?换句话说,我正在寻找不允许在横向模式下显示模式视图的代码(打开纵向旋转锁定)。 这只是一个模态视图,所以我不能关闭整个应用程序的旋转,否则我会完全禁用旋转。 我在这里的研究中发现了代码,但它是在目标C中,以防有所帮助。谢谢

  • 问题内容: 来自目标C的您可以在2个对象之间调用函数以使它们维护一个引用,如果在运行时您不希望在删除该对象的引用之前也不要破坏该对象的话,这会很方便。迅捷有与此类似的东西吗? 问题答案: 这是一个从jckarter的答案衍生而来的简单但完整的示例。 它显示了如何向现有类添加新属性。它通过在扩展块中定义计算属性来实现。计算的属性存储为关联的对象: 编辑: 如果需要支持获取未初始化属性的值并避免发生错

  • 问题内容: 我正在使用核心数据在vc1中保存类别,并希望将列表属性添加到vc2中的列表中。我的数据模型是许多列表属性的一类。 我在vc1中添加了这样的类别: 在vc2中设置数据: 它在最后一行崩溃:说: 如果放置断点并打印数组,则托管对象在数组中。怎么了? 问题答案: 专用的初始化程序是 显然,您不是要插入新对象,因此确实需要一个可选值。也许您将类变量声明为?尝试将其设置为,也将运算符更改为。

  • 问题内容: 因此,我现在正在使用Swift,并且在激活某个开关的某个时间出现了一条通知。 但是,当另一个开关被激活时,我希望在另一个时间发出另一个通知。 这是我的ViewController代码: 这是第一个快速文件,其中包含第一次切换的时间: 我希望下次通知时间是下午1点。这是我为此制作的快速文件: 我对此有疑问,在此先感谢您的帮助! 问题答案: 扩充功能: