理解 NSManagedObject

2024-03-22

在现有项目中,我尝试在项目创建很久之后引入 Core Data,因此它的模型已经就位。 我已经创建了 xcdatamodel 并向其中添加了我唯一的类。 该类应该充当我的应用程序中对象的全局存储。 该类正确实现了 NSManagedObject,并且我已经验证了它是在上下文中创建和保存的,并且还通过获取结果进行检索。

该类中保存数据的方式是通过NSMutableArray。但这是行不通的。这是该类的一个片段:

@interface WZMPersistentStore : NSManagedObject<NSCoding> {
 NSMutableArray *persistentStorage;
}

@property(nonatomic,retain) NSMutableArray *persistentStorage;

-(void)add:(id)element;
-(void)remove:(id)element;
-(id)objectAtIndex:(NSUInteger)index;
-(NSUInteger)num;

@end

在实现中,我还像这样重写 initWithEntity :

- (id)initWithEntity:(NSEntityDescription*)entity insertIntoManagedObjectContext:(NSManagedObjectContext*)context {
 NSLog(@"init with entity");
 [super initWithEntity:entity insertIntoManagedObjectContext:context];

 return [self init];
}

init 方法仅初始化可变数组,我可以从日志中看到它在创建实体时被应用程序委托正确调用。 add方法只是将消息insertObject发送到permanentStorage。 由此产生的问题是:

  1. 我“概念上”做得对吗?我 意思是,有实例是否正确 托管对象中的变量和 像我一样初始化?
  2. 当 ns 记录大小时 持久存储我总是得到 0 即使在登录后不久 添加对象消息(编辑:这不是 是的,我再次验证了,我 正确地添加了 1).
  3. 被管理对象中存储的对象 类槽 persistenceStorage 是 带属性的普通类。是 我需要做点什么 他们 ?我想不是因为我是 在运行时没有收到任何错误。

No,这不是“正确”的方法。您可以在中执行实例变量的初始化awakeFromFetch http://developer.apple.com/mac/library/documentation/Cocoa/Reference/CoreDataFramework/Classes/NSManagedObject_Class/Reference/NSManagedObject.html#//apple_ref/occ/instm/NSManagedObject/awakeFromFetch。 Apple 针对 NSManagedObject 子类的指南包括以下内容:

你也灰心丧气 压倒性的initWithEntity:insertIntoManagedObjectContext:, dealloc, or finalize。改变价值观 在里面initWithEntity:insertIntoManagedObjectContext:方法不会被注意到 如果你不小心的话, 这些更改可能无法保存。最多 初始化定制应该是 在清醒的人之一中进行…… 方法。如果你覆盖initWithEntity:insertIntoManagedObjectContext:, 您必须确保遵守 方法中规定的要求 描述 [...] (NSManagedObject 类参考 http://developer.apple.com/mac/library/documentation/Cocoa/Reference/CoreDataFramework/Classes/NSManagedObject_Class/Reference/NSManagedObject.html)

为了真正提供帮助,我需要更深入地了解您想要实现的目标。无论如何,我强烈建议梳理一下苹果的核心数据编程指南 http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/CoreData/cdProgrammingGuide.html和示例代码,然后再继续。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

理解 NSManagedObject 的相关文章

随机推荐

  • 如何向ListView的列表项添加图标/图像

    我已经使用 arrayadapter 创建了 listview 我将 arrayadapter 添加到包含字符串数组的 listview 但我无法添加图标来 eatch listitem 帮帮我 这里有一个免费摘录 http commons
  • 是否可以禁用隐式 ToString() 调用?

    我想知道是否有办法获得此代码的编译错误 var customer new SomeCustomerClass Console WriteLine Customer address customer 所以我将被迫写这样的东西 var cust
  • 如何创建全局样式表以在 Nx React 项目中共享 scss 变量?

    现在 我真的希望这不是太基于意见 但我只是想在这里提供一些建议 因为我不知道如何开始 我有一个基本的Nx https nx dev 带有 TypeScript React 前端的工作区SCSS https sass lang com 风格
  • 如何使用 ARC 处理“require(..., bail)”语句?

    我正在查看一些示例代码Apple 示例代码中的 Square Cam http developer apple com library ios samplecode SquareCam Introduction Intro html 我想使
  • 获取编辑文本的值错误NULLPOINTER 为什么? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在尝试从对话框上显示的编辑字段的值获取文本并将其保存在变量中 final Dialog dialog new Dialog contex
  • 在jboss 7.1.1中配置gmail

    我正在使用 jboss 7 1 1 想使用 JavaMail 发送电子邮件 我尝试过以下配置 但出现错误 有人用 Jboss 7 1 1 配置过 gmail 吗
  • 如何从 Java SE 中的 GlassFish 服务器获取初始上下文?

    我有一个如下所示的课程 public class Poligon public static void main String args try Context ctx new InitialContext ConnectionFactor
  • Linux 上的 .NET Core 支持 Visual Basic 吗?

    我搜索了所有 Microsoft 文档 但找不到任何明确说明 Linux 上的 NET Core 是否支持 Visual Basic 的内容 那么 Linux 上的 NET Core 是否支持 Visual Basic 并且是否有适用于 V
  • 如何使用 Xlib 将一个窗口的内容复制到另一个窗口?

    我想使用 Xlib 将现有窗口的内容复制到我自己的窗口 我尝试过 XCopyArea 但它拒绝在两个 Windows 之间复制 我也尝试过 XGetImage 和 XPutImage 但也失败了 将窗口的图形内容复制到我自己的窗口的最佳方法
  • 如何将使用 XIB 的项目转换为 Storyboard?

    我在使用包含导航控制器的 TabBarViewControllers 的项目中有一些复杂的 XIB 文件 从 Xcode 4 2 开始 我无法再有效地编辑这些 XIB 文件 包含的视图控制器是不可见的 仅表示为灰色框 似乎在故事板项目中这是
  • 如何判断网站上是否加载了 Flash?

    我正在对一个非常大的网站进行一些测试 创建了许多不同的开发人员 有没有办法判断网站是否正在使用flash questions tagged flash和 或已加载闪存plugin questions tagged plugin 如果页面使用
  • 有人可以向我解释一下这段代码是如何工作的吗?(如果需要数字值并且用户输入其他输入,则程序再次要求用户输入)

    我正在读一本关于 C 的书 C Primer Plus 并找到了这段代码 该程序的目的是 如果用户希望将数字输入读取到 例如数组 gt 1 将cin重置为新输入2 摆脱错误的输入3 提示用户重试 书上原话 这是代码 gt 从书中复制的确切代
  • iOS - 如何将MapView限制到特定区域?

    我有以下问题 我有一个 绘制的地图 图像 我将其作为叠加层添加到 MapView 中 没问题 但我需要将 MapView 限制在覆盖区域 因此用户无法在该区域之外滚动 缩放 但应该可以在 边界 内滚动 缩放覆盖层的 意味着我不能只禁用 Ma
  • Windows Phone 8 上的 PhoneGap 和外部链接

    我正在尝试使用 Phonegap 在 Windows Phone 8 上设置电子商店应用程序 当客户选择要购买的商品时 他应该被带到 Paypal 窗口 在那里他们可以进行购买 此应用程序不需要购物车功能 我希望在手机上的本机浏览器中打开链
  • iOS 7 自定义字体对齐

    在 iOS 6 上实现应用程序布局时 我使用了自定义 TTF 字体 Gotham 我注意到它的基线总是比常规字体高一点 但只是稍微调整一下以适应 现在我已经更新到 iOS 7 SDK 在 iOS 7 设备上运行时 字体位置更接近常规字体 但
  • .NET 私​​钥 Rsa 加密

    我需要使用 RSA 1 5 算法加密字符串 我已获得私钥 然而 我一生都无法弄清楚如何将这个密钥添加到班级中 看来密钥必须是 RSAParameter 结构类型 然而 这需要一组我尚未给出的值 例如模数 指数 P Q 等 我拥有的只是私钥
  • 如何在Python中的多个进程之间共享单个MySQL数据库连接

    如何创建单个数据库连接并让每个进程与其通信 以最大限度地减少每次迭代生成新连接的开销 这是一些示例代码来说明我想要做什么 import multiprocessing import os path import hashlib import
  • 将包管理默认为 PackageReference

    Nuget Config 中是否有任何方法可以将包管理选项默认为 PackageReference 我会假设不 因为我没有看到它here https learn microsoft com en us nuget reference nug
  • 如何获取findElementById方法?

    我通过 Maven 依赖项将 Selenium 最新版本 3 3 1 加载到我的系统中 在尝试编码时 我无法获取该方法findElementById 相反 我只得到旧方法findElement 谁能帮我 注意 在maven中 仅显示最新版本
  • 理解 NSManagedObject

    在现有项目中 我尝试在项目创建很久之后引入 Core Data 因此它的模型已经就位 我已经创建了 xcdatamodel 并向其中添加了我唯一的类 该类应该充当我的应用程序中对象的全局存储 该类正确实现了 NSManagedObject