当我调试应用程序时,我添加了一个新属性(@property NSString *haha;),但它显示以下异常:
Terminating app due to uncaught exception 'RLMException', reason: 'Migration is required due to the following errors:
- Property 'haha' has been added to latest object model.'
Run Code Online (Sandbox Code Playgroud)
但是当我添加忽略的属性时,它工作得很好:
+ (NSArray *)ignoredProperties {
return @[@"thead"];
}
Run Code Online (Sandbox Code Playgroud)
为什么?谢谢。
我想用 Realm 制作一个 3D 数组,我使用 List 来完成这个。这是我的 RealmDatabase 的代码:
class Sensors : Object {
dynamic var type = ""
dynamic var name = ""
let buttonAr = List<buttons>()
}
class buttons: Object{
let buttonsAdded = List<objectNameTopic>()
}
class objectNameTopic: Object {
dynamic var name = ""
dynamic var topic = ""
}
Run Code Online (Sandbox Code Playgroud)
这就是我用来称呼它的:
var saving = Sensors()
var saving2 = objectNameTopic()
var but = buttons()
var array = ["on", "off"]
var array2 = ["1","2"]
var allSensors = useOfRealm.objects(Sensors.self)
override func …Run Code Online (Sandbox Code Playgroud) 我在这个问题中注意到Using Realm.io to store money values
建议是对 Realm for Android/Java 中的货币值使用“long”数据类型。
Swift 的最佳推荐是什么?通过乘以基于货币的因子将其转换为 Int?目前我只处理单一货币,但理论上这可能会改变。作为货币价值,精度显然很重要。
在 Realm 中,如果我有一个 linkingOjbects 关系设置,我应该如何处理删除而不是留下孤儿,尤其是当它是多对多逆关系时?
使用 Realm Person 和 Dog 示例,假设此实例中的 Person 是遛狗者,并且可以在不同的日子由不同的人遛狗
所以一个 Dog 对象被分配给多个 Person 对象。每个 Person 对象都可以看到 Dog。假设以下对象结构和数据
Person : Object {
dynamic var name:String = ""
let dogs = List<Dog>()
}
Dog : Object {
dynamic var name: String = ""
let walkers = LinkingObjects<fromType: Person.self, property:"dogs">
}
Person A
dogs = [Fido,Rover]
Person B
dogs = [Fido, Rover]
Run Code Online (Sandbox Code Playgroud)
人 A 不再需要走 Fido,所以正确的方法是
personA.dogs.remove(objectAtIndex:idxOfFido)
Run Code Online (Sandbox Code Playgroud)
这会更新 personA 中的引用,但它也会更新 dog 中的引用吗?
其次,如果 personB 也不再需要步行 Fido 我会做的
personB.dogs.remove(objectAtIndex:idxOfFido)
Run Code Online (Sandbox Code Playgroud)
但这会不会在我的狗领域留下一个对 …
因此,在 a 中IntentService,应用程序可能处于活动状态或非活动状态,onHandleIntent被调用,我将其放置在代码下方。这是我将数据存储到领域的地方。
Realm realm = null;
try {
realm = Realm.getDefaultInstance();
realm.executeTransactionAsync(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
for (AppItem item : items) {
AppItem item2 = realm.createObject(AppItem.class, UUID.randomUUID().toString());
item2.mName = item.mName;
item2.mCount = item.mCount;
item2.mUsageTime = item.mUsageTime;
}
}
});
} finally {
if (realm != null) {
realm.close();
}
}
Run Code Online (Sandbox Code Playgroud)
然后我尝试在onPostExecutein 中访问它AsyncTask,在 中doInBackground,我正在获取RealmResults<AppItem>,然后将其存储到List <AppItem>并将其发送到onPostExecute放置此代码的位置。appItems这里是 ReamObject
Realm backgroundRealm …Run Code Online (Sandbox Code Playgroud) 我有两个模型,我们称它们为学校和教师。模型如下
@objcMembers public class Schools : Object {
dynamic var Id : String = ""
dynamic var UserId : Int64 = 0
dynamic var Name : String? = ""
dynamic var listTeachers : List<Teachers>? = nil
dynamic var teachersList : [Teachers]? = []
}
@objcMembers public class Teachers : Object {
dynamic var Id : String = ""
dynamic var UserId : Int64 = 0
dynamic var Name : String? = ""
}
Run Code Online (Sandbox Code Playgroud)
现在在保存数据之前,我将教师对象(列表)放在 School 对象中,然后我将该 School 对象保存在领域写闭包中。
之后我只得到 School …
我知道我可以使用以下代码轻松完成此操作:
realm.delete(realm.objects(Duck.self))
realm.delete(realm.objects(Frog.self))
//...
realm.delete(realm.objects(Cat.self))
Run Code Online (Sandbox Code Playgroud)
但是删除除一种类型的对象之外的所有对象的最佳方法是什么?
请注意,我有很多类型,每次添加新类型时我都应该修改我的deleteAll方法。
我有一个关于在反应本机中创建和使用领域数据库的问题。
我有两个屏幕,负责执行crud、category.js和client.js等操作
在category.js中我有以下构造函数
constructor(props) {
super(props);
realm = new Realm({
schema: [{ name: 'category', primaryKey: 'id', properties: { id: 'int', descricao: 'string', status: 'bool' } }]
})
}
Run Code Online (Sandbox Code Playgroud)
在cliente.js中我有
constructor(props) {
super(props);
realm = new Realm({
schema: [{ name: 'client', primaryKey: 'id', properties: { id: 'int', nome: 'string', cpf: 'string', celular: 'string', status: 'bool' } }]
})
}
Run Code Online (Sandbox Code Playgroud)
现在我有以下疑问。
对于这个模式,我是否有一个包含表类别和客户端的数据库?
当我在 client.js 屏幕上并且想要转到 Category.js 时,我收到以下错误通知:已在具有不同架构的当前线程上打开。
如何关闭或打开连接,以便我可以在两个屏幕上使用该领域?
我有一个 Realm 模型类,我需要它是可解码的,这样我就可以从 JSON 序列化它并将其保存到数据库。每一个PortfolioItem都与一个相关联Product,在某些时候我需要通过逆关系来PortfolioItem访问。Product这就是我拥有LinkingObjects财产的原因。问题是当我试图遵守Decodable协议时。编译器给我一个错误Cannot automatically synthesize 'Decodable' because 'LinkingObjects<PortfolioItem>' does not conform to 'Decodable'。这该如何处理呢?我在网上找到的关于 LinkingObjects 和 Decodable 的信息很少,我不知道如何解决这个问题。
class PortfolioItem: Object {
@objc dynamic var id: String = ""
@objc dynamic var productId: String = ""
@objc dynamic public var product: Product?
convenience init(id: String, productId: String) {
self.init()
self.id = id
}
}
final class Product: Object, Decodable {
@objc dynamic var id: String …Run Code Online (Sandbox Code Playgroud) 以前对这个问题的回答已经有一年多了。我试过了。他们真的不工作。我已经成功安装了使用 Realm 的 pod。我在 Realm 数据库中写入了几个具有名称和角色的用户,我可以使用 Realm Studio 看到这些用户。然后我离开了我的电脑一个小时(在此期间没有其他人碰过它)。当我回来时,我收到了 no such module 错误。
我曾多次尝试通过终端更新 pod 文件。我也退出了 Xcode 并重新启动了它。我还在谷歌上搜索解决方案,并尝试通过产品下拉菜单添加新方案。虽然这将使我的项目成功编译,但新方案不会在模拟器上启动。
这是我的 podfile:
# Uncomment the next line to define a global platform for your project
# platform :ios, '12.2'
target 'realmProject' do
# Comment the next line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!
# Pods for realmProject
pod 'RealmSwift'
end
Run Code Online (Sandbox Code Playgroud)
这是给我错误的 ViewController:
import UIKit
import RealmSwift
class SecondViewController: UIViewController {
@IBOutlet weak var nameTextField: UITextField! …Run Code Online (Sandbox Code Playgroud) realm ×10
swift ×7
ios ×3
realm-list ×2
xcode ×2
android ×1
iphone ×1
objective-c ×1
react-native ×1
reactjs ×1