【问题标题】:Realm not writing correctly领域没有正确书写
【发布时间】:2015-08-06 23:49:36
【问题描述】:

我一直在尝试使用 Realm 为我的 cocos2d 游戏创建一个数据库,但无法解决一些问题。我正在使用 Realm Objective-C 0.92.3 (https://realm.io/docs/objc/latest/),因为我需要我的游戏在 iOS 7 或更高版本上运行。

我一直在使用一些小代码来编写和阅读,但不知何故它不起作用。

     let realm = RLMRealm.defaultRealm()
     var tempo = EnemyDB()
     tempo.damage = 7
     realm.beginWriteTransaction()
     realm.addObject(tempo)
     realm.commitWriteTransaction()
     var temp = EnemyDB.allObjects()

这不知何故返回了空对象(temp = RLMResults!未评估的查询在 0x00007f954708a070),有人看到任何问题吗?

感谢您的帮助

编辑:

import Foundation

class EnemyDB : RLMObject {
     var damage : Int!
}

【问题讨论】:

  • 您可以添加您的EnemyDB 代码吗?
  • 在任何帮助中添加

标签: ios swift cocos2d-iphone realm


【解决方案1】:

这发生在我身上,最后我发现我的查询字符串不完整,通过将我的谓词打印到控制台,如下所示。

目标-C:

NSLog(@"%@",searchPredicate);

斯威夫特:

print(\(searchPredicate)

它打印“SELF.message CONTAINS nil”。

nil 是这里的问题。我修复了它,问题就消失了。

在您的案例中检查相同的问题。

【讨论】:

    【解决方案2】:

    您可能需要为EnemyDB 中的damage 值显式设置默认值。

    尝试将其更改为此,如果可行,请告诉我!

    class EnemyDB : RLMObject {
         var damage: Int = 0
    }
    

    【讨论】:

    • 这是问题之一,在复制了这个stackoverflow.com/questions/25198509/… 后它帮助了我,最后一个问题是有时你必须删除用不同对象创建的旧数据库,所以你可以读出新的价值观。
    • 很高兴我能帮上忙!是的,如果 Realm 生成一个 .realm 文件并且您随后修改了对象的属性,则您需要执行迁移才能将 .realm 更新为新的对象模式。但出于开发目的,删除旧的 .realm 文件更容易。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-23
    • 1970-01-01
    相关资源
    最近更新 更多