• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 核心数据替代品

[复制链接]
菜鸟教程小白 发表于 2022-12-13 02:28:20 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

在使用 Core Data 定义我的模型时遇到了一些问题。

1.无法即时创建对象。

我希望能够创建如下所示的对象并继续为其属性添加值。

let action = Action()
action.desc = "hello"

但如果您使用的是 Core Data 模型类,则不能这样做,因为您会收到错误Failed to call specified initializer on NSManagedObject class。您必须使用 initWithEntity:insertIntoManagedObjectContext: 和所有创建一个新对象。

<强>2。不能在函数中使用类类型作为返回类型。

使用 Core Data 时,我保留一个单独的文件来放置所有获取/保存方法。在其中,我有一个用于检索所有 Action 对象作为数组的方法。

public func loadActions() -> [Action] {
    let fetchRequest = NSFetchRequest()
    let entityDescription = NSEntityDescription.entityForName("Action", inManagedObjectContext: managedObjectContext!)
    fetchRequest.entity = entityDescription

    var error: NSError?
    let result = managedObjectContext?.executeFetchRequest(fetchRequest, error: &error)

    return result!
}

我不能使用 Action 类型来创建类型化数组,因为我会收到错误 Method cannot be declared public 因为它的结果使用内部类型。所以我必须将数组作为 AnyObject 的数组,然后在我必须使用它们时将它们转换为 Action

3.类中不能有方法。

我知道您可以在 Objective-C 中创建类别并将所有方法放入其中。我猜 Swift 中的等价物是扩展(?)。但是,如果您可以将类及其方法完全放在同一个地方,那就太好了。

假设我走 OO 道路并以正常方式创建整个模型,这带来了我的问题。我可以如何以及在哪里保存这些对象?



Best Answer-推荐答案


这不是真正的答案,但我认为第 2 点和第 3 点无效?

  1. 不要公开你的方法——这里的问题与核心数据无关,而是与 Swift 的访问级别有关。您不能创建返回内部类型 Action 的公共(public)方法 loadActions。您必须将 Action 公开,或将方法设为内部(即删除单词 public)

  2. 你可以在类中拥有方法 - 只需将它们写在那里?而且即使你需要使用扩展名,你仍然可以将它放在同一个文件中吗?

PS 如果你确实找到了一个好的 Swift 替代品,请告诉我。我现在正在寻找一个 - 这就是我首先找到您的问题的方式!

关于ios - 核心数据替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26175683/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap