我正在使用领域(目前为0.85.0),我的应用程序使用数据库来存储用户特定的数据,例如当前用户的联系人.当用户决定退出时,我需要删除关于用户的每一点信息,在我看来,最明显,简单和干净的东西将是擦除整个领域.不幸的是,Cocoa lib没有提供该功能.
目前,我坚持以下
RLMRealm *realm = [RLMRealm defaultRealm];
[realm beginWriteTransaction];
[realm deleteObjects:[MyRealmClass1 allObjectsInRealm:realm]];
[realm deleteObjects:[MyRealmClass2 allObjectsInRealm:realm]];
[realm deleteObjects:[MyRealmClass3 allObjectsInRealm:realm]];
[realm commitWriteTransaction];
Run Code Online (Sandbox Code Playgroud)
任何更好的想法?
谢谢
我在一个新的iOS Swift项目中使用Realm.我正在使用Xcode 6.0.1与iOS SDK 8.0和Realm 0.85.0
我正在尝试使用新的Realm主键功能,所以我可以做一个addOrUpdateObject.
这是一个示例模型:
import Foundation
import Realm
class Foo: RLMObject {
dynamic var id = 0
dynamic var title = ""
func primaryKey() -> Int {
return id
}
}
Run Code Online (Sandbox Code Playgroud)
我是如何尝试添加/更新新对象的:
let foo = Foo()
foo.title = titleField.text
foo.id = 1
// Get the default Realm
let realm = RLMRealm.defaultRealm()
// Add to the Realm inside a transaction
realm.beginWriteTransaction()
realm.addOrUpdateObject(foo)
realm.commitWriteTransaction()
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
RLMExecption',原因:''Foo'没有主键,无法更新
以下是主键上的文档.我可能没有正确设置:http:
//realm.io/docs/cocoa/0.85.0/api/Classes/RLMObject.html#//api/name/primaryKey
最新文档现在在这里:https: //realm.io/docs/objc/latest/api/Classes/RLMObject.html#//api/name/primaryKey
我为每个ChatData对象都有一个唯一的msgid.
@interface ChatData : RLMObject
@property NSInteger msgid;
....
@end
Run Code Online (Sandbox Code Playgroud)
但每次我创建一个新对象时,我必须查询所有对象并获取最后一个msgid.
RLMArray *all = [[ChatData allObjects] arraySortedByProperty:@"msgid" ascending:YES];
ChatData *last = [all lastObject];
ChatData *newData = [[ChataData alloc]init];
newData.msgid = last.msgid+1;
Run Code Online (Sandbox Code Playgroud)
有没有一种有效的方法来替换这种实现?
我可以选择进行迁移,但我更愿意删除defaultRealm()中的所有内容.我怎么能这么容易做到?
realm.deleteObject(object)
Run Code Online (Sandbox Code Playgroud)
是唯一与.deleteObjects一起使用的函数.
我试过以下代码:
方法1
realm.deleteObjects(RLMObject.objectsInRealm(realm, withPredicate: NSPredicate(value: true)))
Run Code Online (Sandbox Code Playgroud)
方法2
realm.deleteObjects(Dog.allObjectsInRealm(realm))
realm.deleteObjects(Person.allObjectsInRealm(realm))
realm.deleteObjects(Goal.allObjectsInRealm(realm))
realm.deleteObjects(Goals.allObjectsInRealm(realm))
Run Code Online (Sandbox Code Playgroud)
两者都无法阻止迁移异常.
我最近将Xcode更新到版本7.1,其中包括Swift 2.1.我安装了Swift 2.1而没有任何麻烦.在尝试运行我的项目后,我意识到我需要获取最新版本的Realm,因为之前的版本不支持Swift 2.1.我删除了旧框架并导入了Realm 0.96.2.每当我跑,我现在得到这个错误:
bash: /Users/userName/Library/Developer/Xcode/DerivedData/appName-ghiroqitgsbvfhdqxsscyokyoouz/Build/Products/Debug-iphoneos/appName.app/Frameworks/Realm.framework/strip-frameworks.sh: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我怀疑问题在于如果您希望将应用程序提交到App Store所需的脚本,因此我删除了运行脚本阶段,添加了新脚本,并从Realm文档站点复制了脚本:
bash "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/Realm.framework/strip-frameworks.sh"
Run Code Online (Sandbox Code Playgroud)
我认为那会解决它,但事实并非如此.然后我认为问题可能出在Realm.framework或RealmSwift.framework文件中,所以我删除了它们并重新导入它们(以防万一我搞砸了).没有改变.有谁知道这个错误是否有解决方法?
谢谢!-CodeIt
有三个组成部分:
您可以单独或一起使用每个。这样你就可以
这一切都正确吗?(谢谢)
我正在使用Kotlin和Realm编写数据类
data class AuthToken(val register: Boolean,
val token: String,
val tokenSecret: String,
val user: AuthUser)
Run Code Online (Sandbox Code Playgroud)
我必须将数据保存到db,所以我使用Realm来保存它.但是正如我们所知,如果我想将类保存到Realm,那么AuthToken该类必须扩展RealmObject.
这就是问题,Kotlin说数据类不能扩展类.所以我放弃数据类,只使用普通的Kotlin类作为模型,然后另一个问题来了:
Kotlin类没有吸气剂或固定剂.我们知道Realm类必须将所有属性设置为private并编写getter和setter.
现在我想知道如何解决这个问题.
你们有关于使用领域和Recyclerview的最佳实践吗?我知道这是一般性问题,但我在网上找不到任何内容.例如,我遇到了很多麻烦,试图在一行上实现简单的颜色变化.例如,考虑这种典型用法:
public class User extends RealmObject {
@PrimaryKey
String name;
boolean isSelected;
...
constructor, getter and setters
}
public class UserAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private RealmResults<User> users;
public UserAdapter(RealmResults<User> users) {
this.users = users;
}
...
public void markAsSelected(int position){
// get the old selected user and deselect it
notifyItemChanged(? how do i get the position given my User has no index ?);
// mark as selected the new user at position
}
Run Code Online (Sandbox Code Playgroud)
我遇到了很多问题,因为我在互联网上找不到任何东西.我知道这是因为我不知道如何正确使用领域.但找到正确的方法本身就是一场斗争.我阅读了他们所有的文档,但无济于事.
编辑:因为我被要求 - >而不是说"我有一堆问题",描述你的问题,我们将尝试提供你的不理解的见解和答案.
所以我的问题很简单:
我有一个RealmUser:
public …Run Code Online (Sandbox Code Playgroud) 我有一个对象NotSureItem中,我有三个属性title的名字是从更名text和textDescription我已经后来添加和dateTime财产.现在,当我要运行我的应用程序时,它会在我想要向这些属性添加内容时崩溃.它显示以下声明.
'Migration is required for object type 'NotSureItem' due to the following errors:
- Property 'text' is missing from latest object model.
- Property 'title' has been added to latest object model.
- Property 'textDescription' has been added to latest object model.'
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
import Foundation
import Realm
class NotSureItem: RLMObject {
dynamic var title = "" // renamed from 'text'
dynamic var textDescription = "" // added afterwards
dynamic var …Run Code Online (Sandbox Code Playgroud)