我需要Realm在android 中的数据库中添加自动增量键字段.我怎样才能做到这一点?这可能吗?
提前致谢.
我正在使用Realm for Swift 1.2,我想知道如何为实体实现复合主键.
因此,您可以通过覆盖来指定主键 primaryKey()
override static func primaryKey() -> String? { // <--- only 1 field
return "id"
}
Run Code Online (Sandbox Code Playgroud)
我能看到的唯一方法就是创建另一个复合属性
var key1 = "unique thing"
var key2 = 123012
lazy var key: String? = {
return "\(self.key1)\(self.key2)"
}()
override static func primaryKey() -> String? {
return "key"
}
Run Code Online (Sandbox Code Playgroud)
你如何在Realm中正确提供复合键?
我想将android应用程序与服务器同步.在服务器中,我通过触发器维护了上次更新日期,因为它使用SQL服务器,但我的Android应用程序使用Realm,因此无论何时插入或更新任何行,如何在字段中设置当前日期时间.任何建议都将受到高度赞赏.
我正在使用最新的Xcode 7.1,我的项目使用Swift 2.1.我按照Swift网站上的所有指示开始(动态框架选项卡),一切都很好,直到我尝试import RealmSwift上课.编译器在我尝试导入RealmSwift的行上抛出以下错误:
error: module file was created by an older version of the compiler; rebuild 'RealmSwift' and try again: /Users/USERNAME/Desktop/iosDev/PROJECTNAME/RealmSwift.framework/Modules/RealmSwift.swiftmodule/x86_64.swiftmodule
Run Code Online (Sandbox Code Playgroud)
所有文件都在${PROJECT_DIR}根目录(RealmSwift.framework和Realm.framework)中.
我搜索并搜索了一个答案,更新了Xcode,删除并重新配置了库.我不确定'重建RealmSwift'意味着什么(我是swift的新手).当我尝试在我的类中使用库或使用Xcode插件创建新的Realm模型对象时,只会抛出错误.
我正在使用(和爱)Siesta在我的Swift应用程序中与REST Web服务进行通信.我已经实现了一系列ResponseTransformer来将API调用响应映射到模型类,以便将Siesta Resources自动解析为对象实例.一切都很好.
我现在想要实现一个Siesta PersistantCache对象来支持离线模式,让Siesta将这些对象缓存到磁盘(而不是在内存中),方法是将它们存储在Realm中.我不知道如何做到这一点,因为文档说(关于EntityCache.writeEntity函数):
此方法可以 - 并且应该 - 检查实体的内容和/或标头,如果它不可编码则忽略它.虽然它们可以应用基于类型的规则,但是缓存实现不应该应用基于资源或基于URL的规则; 用于
Resource.configure(...)选择缓存哪些资源以及由谁来缓存.
为了符合本指南,我根据服务配置期间的URL模式匹配为每种资源类型创建了一个特定的PersistentCache对象:
class _GFSFAPI: Service {
private init() {
configure("/Challenge/*") { $0.config.persistentCache = SiestaRealmChallengeCache() }
}
Run Code Online (Sandbox Code Playgroud)
但是,由于EntityCache协议方法只包含对Entity的引用(它暴露原始内容而不是类型化对象),我看不出如何在调用EntityCache.writeEntity时调用realm write方法或如何提取EntityCache.readEntity期间Realm中的对象.
任何有关如何处理此问题的建议将不胜感激.
首先,我正在检查self.statisticsArray.count == 0我是否创建了新记录,否则我正在更新现有值.当我创建一个新对象时,一切正常,但是当我尝试更新存在的对象时,它会在下一个错误时崩溃:
Attempting to modify object outside of a write transaction - call beginWriteTransaction on an RLMRealm instance first
Run Code Online (Sandbox Code Playgroud)
但我在一个.write区块内完成所有这一切,为什么会出现这样的错误?我读过如果我使用.write(),那么我不需要关闭交易.任何人都可以形容我崩溃的原因吗?
if self.statisticsArray.count == 0 {
self.statistics.summary = 250
try! self.realm.write({
self.realm.add(self.statistics)
self.realm.add(record)
})
} else {
if day == self.statisticsArray.last?.date {
try! self.realm.write({
self.realm.objects(Statistics).last?.summary += 250
self.realm.add(record)
})
} else {
try! self.realm.write({
self.statistics.summary = (self.statisticsArray.last?.summary)! + 250
self.realm.add(self.statistics)
self.realm.add(record)
})
}
}
Run Code Online (Sandbox Code Playgroud) 我们有一个简单的类Person,它来自领域Object.现在我们希望该子类符合Equatable协议.非常简单的代码看起来像这样.
class Person: Object, Equatable {
dynamic var localID = "0"
dynamic var name:String?
}
func ==(lhs: Person, rhs: Person) -> Bool {
return lhs.localID == rhs.localID
}
Run Code Online (Sandbox Code Playgroud)
我们从领域版本0.98.8开始,一切都按预期工作.当我们更新到版本0.102.0(以及其他版本之间)时,会出现编译器错误消息
Error: Redundant conformance of ‚Person‘ to protocol ‚Equatable‘
Run Code Online (Sandbox Code Playgroud)
不够奇怪,如果降级回版本0.98.8,错误仍然存在.另一个奇怪的行为,在我们的一个开发者机器上,相同的代码编译得很好.
经过一些研究,我们不知道发生了什么,以及如何解决或解决这个问题.
如何在使用Realm检索数据时返回带有值的类?我正在尝试使用此代码,但不允许使用swift 3:
static func getInfoById(id: String) -> DataInfo {
let scope = DataInfo ()
let realm = try! Realm()
scope = realm.objects(DataInfo.self).filter("IdInfo == %@", id)
return scope
}
Run Code Online (Sandbox Code Playgroud) 我从realm studio下载了realm-studio-1.20.0-x86_64.AppImage.如何安装此映像以便在我的个人计算机上浏览加密的域移动数据库,该数据库可以从模拟器或真实设备导出或提取.
注意:我不想对chrome使用stetho插件,因为它不支持加密域移动数据库浏览.
我有一个Message/RLMObject具有NSString *jabberID属性/行的模型,我想检索unique该行内的每个值.
换句话说,我想jabberID从我的Message模型中检索非重复值.任何人都可以帮忙解决这个问题吗?
我使用coredata的方式是使用returnsDistinctResults设置NSFetchRequest.
realm ×10
swift ×6
ios ×5
android ×2
entity ×1
equatable ×1
objective-c ×1
siesta-swift ×1
swift3 ×1
xcode ×1