标签: core-data

核心数据:查询谓词中的objectID?

我使用获取请求和谓词从Core Data持久性存储中获取一组对象.我当前的谓词只是检查属性是否> =某个值.这一切都很好,除了我想最终排除当前在数组中保存的任何对象.

我基本上需要能够排除一组对象,我认为我能做到这一点的唯一方法是能够objectID从我的托管对象数组中获取一个列表,并在我的谓词中创建另一个表达式以确保任何对象返回不一样objectID.IE @"ANY records.objectID NOT IN %@", arrayOfObjectID.

我怎样才能做到这一点?

predicate core-data fetch

38
推荐指数
3
解决办法
2万
查看次数

如何使用第一个字符作为节名称

我正在使用Core Data作为表格视图,我想使用每个结果的第一个字母作为节标题(所以我可以在侧面获得节索引).有没有办法用关键路径做到这一点?像下面的东西,我name.firstLetter用作sectionNameKeyPath(不幸的是,这不起作用).

我是否必须手动抓取每个结果的第一个字母并创建我的部分?是否更好地放入一个新属性来保存第一个字母并将其用作sectionNameKeyPath

NSFetchedResultsController *aFetchedResultsController = 
[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
            managedObjectContext:managedObjectContext
            sectionNameKeyPath:@"name.firstLetter"
            cacheName:@"Root"];
Run Code Online (Sandbox Code Playgroud)

谢谢.

**编辑:**我不确定它是否有所作为,但我的结果是日语,按片假名排序.我想用这些片假名作为部分索引.

iphone cocoa-touch core-data objective-c uitableview

38
推荐指数
2
解决办法
2万
查看次数

CoreData - 无法将空字符串设置为属性的默认值

我的datamodel中有一个实体,其字符串属性当前是可选的,我想将其转换为必需属性,其默认值为空字符串.

正如其他人发现的那样,在Xcode CoreData数据建模器中将默认值保留为空会导致验证错误(因为设计者将此解释为NULL),但尝试使用'',""或@""作为默认值会导致这些文字根据需要,字符被解释为默认字符,而不是空的零长度字符串.

我确实在谷歌上发现了这个帖子,但是,除了解决方案真的很丑陋(模型定义在.xcdatamodel和objc源之间拆分)之外,它也不适用于轻量级迁移,因为这些迁移完全基于.xcdatamodel文件和实体实现中的objc逻辑未加载.

有没有办法在数据模型设计师中实现这一目标?

migration string xcode core-data

38
推荐指数
4
解决办法
1万
查看次数

如何更新已在Swift中保存的CoreData条目?

我不确定我在这里做错了什么,但是当我第一次保存到coredata时,它运行得很好.当我试图覆盖它时,它没有.

func testStuff() {
    var token = loadLoginData()
    println("Token \(token)")
    saveLoginData("New Token")
    var newToken = loadLoginData()
    println("Token \(newToken)")
}

func saveLoginData(accessToken: String) {
    var appDel: AppDelegate = (UIApplication.sharedApplication().delegate as AppDelegate)
    var context: NSManagedObjectContext = appDel.managedObjectContext!
    // save data to core data
    var loginData = NSEntityDescription.insertNewObjectForEntityForName("LoginData", inManagedObjectContext: context) as NSManagedObject
    loginData.setValue(accessToken, forKey: "accessToken")
    context.save(nil)
    println("Done saving user")
}

/* Output
Token Optional("12345")
Done saving user
Token Optional("12345")
*/
Run Code Online (Sandbox Code Playgroud)

加载登录数据启用调用saveLogin数据的函数

func loadLoginData() -> String? {
    var appDel: AppDelegate = (UIApplication.sharedApplication().delegate as AppDelegate) …
Run Code Online (Sandbox Code Playgroud)

core-data ios swift

38
推荐指数
5
解决办法
6万
查看次数

CoreData类的重新声明无效

我正在使用CoreData,在一个名为"RoleName"的实体上.

问题是:我在我的模型中单击"Create NSManagedObject subclass",因此它会自动为我的实体创建类.

但是,在类的声明中,我收到此错误:

无效的"RoleName"重新声明

即使我没有任何其他同名的课程.

core-data nsmanagedobject ios swift

38
推荐指数
2
解决办法
1万
查看次数

核心数据 - 如何获取具有最大值属性的实体

我有一个Person属性的实体personId(personId是唯一的)

如何获取max personId的Person?

(我想取这个人本身而不是财产的价值)

iphone core-data objective-c nsfetchedresultscontroller ios

37
推荐指数
4
解决办法
2万
查看次数

如何在今天的扩展(iOS)中访问CoreData模型

是否可以像在原始应用程序中那样在swift的今天扩展中使用我的CoreData模型?如果是,我该如何创建NSManagedObjectContext?
我真的不知道,除了group-identifier之外,但不幸的是我不知道如何获取上下文..
过去我创建的应用程序在开头检查我想要使用CoreData然后我得到了managedObjectContext通过我的AppDelegate ..但我怎么能在扩展中做那样的想法?Apple不提供相关信息..

我在AppDelegate中编辑了这一行:

NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"HTWcampus.sqlite"];
Run Code Online (Sandbox Code Playgroud)

对此(在将组包括在两个目标之后):

NSURL *storeURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.BenchR.TodayExtensionSharingDefaults"];
storeURL = [storeURL URLByAppendingPathComponent:@"HTWcampus.sqlite"];
NSLog(@"StoreURL2: %@", storeURL);
Run Code Online (Sandbox Code Playgroud)

有了这个,我的应用程序中的现有数据库就消失了(这很棒,因为我认为将数据库放在共享段中是有效的).

但是如何在扩展中创建我的上下文实例?我怎样才能访问我的NSManagedObject-subclasses?

在扩展中,我有这个代码到目前为止:

var context: NSManagedObjectContext!

override func viewDidLoad() {
    super.viewDidLoad()

    var storeURL = NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier("group.BenchR.TodayExtensionSharingDefaults")
    storeURL = storeURL?.URLByAppendingPathComponent("HTWcampus.sqlite")
    let modelURL = NSBundle.mainBundle().URLForResource("HTWcampus", withExtension: "momd")
    let model = NSManagedObjectModel(contentsOfURL: modelURL)
    let coordinator = NSPersistentStoreCoordinator(managedObjectModel: model)
    coordinator.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: storeURL, options: nil, error: nil)
    context = NSManagedObjectContext()
    context.persistentStoreCoordinator = coordinator
}
Run Code Online (Sandbox Code Playgroud)

这是正确的吗?如果是的话,我怎样才能获得我的NSManagedObject-Subclasses?我是否必须将momd文件添加到扩展目标?如果是的话,我该怎么做?

core-data ios swift ios8 today-extension

37
推荐指数
1
解决办法
2万
查看次数

如何在iOS和OS X之间创建单个共享框架

我正在尝试创建一个框架来保存在iOS和OS X上运行的应用程序的公共实体类.目前我只是在每个目标中包含文件,但这需要更改数据模型,以便从当前目标获取类(因为在Swift中你必须指定模型文件中具有类的模块).这当然意味着我有时会忘记,事情不起作用.

显而易见的解决方案是创建一个包含实体类的共享框架,以便数据模型始终指向同一个位置.

问题是似乎没有任何方法可以创建构建在两个平台上的框架.

有没有人找到一种方法来创建一个适用于两个平台的单一框架或库?

macos frameworks core-data ios8

37
推荐指数
2
解决办法
1万
查看次数

NSPredicate与Integer进行比较

如何比较NSPredicate中的两个NSNumber或NSNumber和Integer?

我试过了:

NSNumber *stdUserNumber = [NSNumber numberWithInteger:[[NSUserDefaults standardUserDefaults] integerForKey:@"standardUser"]];
    fetchRequest.predicate = [NSPredicate predicateWithFormat:@"userID == %@", stdUserNumber];
Run Code Online (Sandbox Code Playgroud)

嗯,这不起作用......任何人都知道如何做到这一点?我确定它很简单,但我找不到任何东西......

core-data nspredicate ios

36
推荐指数
1
解决办法
4万
查看次数

核心数据VS Sqlite或FMDB ....?

现在这可能看起来像一个重复的线程,但我的问题是我已经阅读了很多问题,如核心数据与SQLite 3和其他人,但这些都是2 - 3年.我还读到FMDB是由于iOS上不支持核心数据而开发的,因此不应再使用它了.而另一方面,我已经读过,不应该将核心数据用作数据库.

所以我很困惑,我是否应该使用核心数据进行对象存储.我的意思是在什么基础上我应该决定使用哪个?是否有苹果或其他人提供的指导方针......或者是时间会来找我的东西.

sqlite iphone core-data fmdb ios

36
推荐指数
4
解决办法
2万
查看次数