【问题标题】:Empty string vs nil inside a core Data entity核心数据实体中的空字符串与 nil
【发布时间】:2012-06-17 20:53:51
【问题描述】:

我有一个应用程序,它提供了一个预填充的 sqlite 数据库,用户以后可以扩展该数据库。当我构建数据库时,我对其进行了设置,以便值必须是浮点数(NSNumber 包含浮点数)。在数据库的某些“单元格”上没有值,所以我没有填写。

但是,当我使用 Firefox 扩展探索 sqlite Db 时,我看到以下内容:

我没有填写的“单元格”是蓝色的。根据 Firefox 扩展设置,蓝色的“单元格”表示一个字符串。红色表示 nil/null。

我正在尝试获取特定属性的值,过滤这些“字符串”并执行以下操作:

Entity  *entity = [[self.managedObjectContext executeFetchRequest:request error:&error] objectAtIndex:0];
[entity setValue:nil forKey:@"attribute"]; // I would do a loop for all the items in the array

但是,我找不到获取那些似乎是字符串的值的方法。我唯一能做的就是选择所有浮点值为 0 的值,但问题是实际上有 0 的值并且它实际上是有意义的。

关于如何做到这一点的任何想法?

如果我获取不为零的所有内容,它们就在那里。所以他们不被认为是空的。

【问题讨论】:

    标签: ios xcode core-data nsfetchedresultscontroller nsmanagedobject


    【解决方案1】:

    CoreData 不是数据库。它是一个对象图关系管理器。您正在尝试执行数据库操作,但它无法正常工作。如果您需要直接修改数据库,则需要使用实际的数据库工具,例如 SQLite 库(或 sqlite3 CLI 工具)。

    【讨论】:

    • 是的,CoreData 不是数据库,而是管理数据库的接口。我刚刚找到了一种方法来做我需要的代码,而不是外部编辑器。这样我就可以管理我已经随应用程序交付的数据库。基本上我获取了所有的值,我得到了一个数组。使用这个数组,我将 0 浮点值替换为 nil,然后设置实际上为 0 的值。因为那里只有四个,所以没有那么困难。
    • @Marcal:它不是一个管理界面。它在后台使用数据库这一事实纯粹是一个实现细节。
    猜你喜欢
    • 2017-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多