我为iPad创建了一个使用Apple "Use CoreData"模板的项目.
我定制了几个东西,例如对象的名称,但系统保持不变.
Apple使用的是一个简单MasterViewController.h的UITableViewController和DetailViewController.h一个简单的UIViewController.一旦你选择了其中的一个对象UITableView,MasterViewController.h就会将其属性赋予DetailViewController.
现在的问题是:
我创建了第三个视图控制器,命名为ResultsViewController.h应显示所有数据(对象的属性).
我想用一个或多个NSArray(s),它应该包含我的所有数据(而不仅仅是选择,但所有.因此,如果你创建了5个对象,你想拥有5倍NSArray).
(1)如何获取xcoredatamodel能够访问它们的值ResultsViewController?发送获取请求对我不起作用?
(2)如何确定我在UITableView(MasterViewController.h)中创建的对象数量?
CoreData结构:
简单,一个实体,几个属性,就是这样!
非常感谢!
我有一个方法执行NSFetchRequest以获取托管对象数组(特别是XMPPUserCoreDataStorageObjects).在performUserFetch返回数组之前对象是正确的,我可以打印所有的displayNames,但是一旦我将数组返回到printUserInfo,对象就会进入故障状态,除了Core Data不会带来问题他们回来了!
- (NSArray*)performUserFetch
{
NSManagedObjectContext *context = [[NSManagedObjectContext alloc] init];
[context setPersistentStoreCoordinator:[xmppRosterStorage persistentStoreCoordinator]];
[context setUndoManager:nil];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"XMPPUserCoreDataStorageObject" inManagedObjectContext:context];
NSSortDescriptor *sd1 = [[NSSortDescriptor alloc] initWithKey:@"sectionNum" ascending:YES];
NSSortDescriptor *sd2 = [[NSSortDescriptor alloc] initWithKey:@"displayName" ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObjects:sd1, sd2, nil];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setEntity:entity];
[fetchRequest setSortDescriptors:sortDescriptors];
[fetchRequest setReturnsObjectsAsFaults:NO];
NSError *err;
NSArray *result = [context executeFetchRequest:fetchRequest error:&err];
return result;
}
- (void)printUserInfo
{
NSArray *result = [self performUserFetch];
for(XMPPUserCoreDataStorageObject *user in result)
{
NSString …Run Code Online (Sandbox Code Playgroud) cocoa core-data nsfetchrequest xmppframework automatic-ref-counting
我有一个表(Transactions),其中包含包含Account_name和交易金额的记录.我想计算每个帐户的所有交易的总数,以"私人"开头,交易金额> 1000.我希望按名称按降序排列帐户.
所以SQL请求将是这样的:
SELECT Account_name, SUM(Amount)
FROM Transactions
WHERE Account_name like 'Private%'
and Amount > 1000
GROUP BY Account_name
ORDER BY Account_name DESC
Run Code Online (Sandbox Code Playgroud)
我如何在Swift中使用Core-DATA来做到这一点.
谢谢
我有以下内容:
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let managedObjContext = appDelegate.managedObjectContext
let fetchRequest = NSFetchRequest(entityName: "RAS")
var error: NSError?
let predicate1 = NSPredicate(format: "%K AND %K == false", "rasScore", "rasStatus")
fetchRequest.predicate = predicate1
do {...
Run Code Online (Sandbox Code Playgroud)
这给了我所有符合NSPredicate参数的记录,但我只想要具有最高值的记录rasScore.我该怎么做呢?是否可以将其纳入NSPredicate格式?
当我尝试从Core Data获取超过1000个NSManagedObjects时,我的应用程序崩溃了这条消息:
error: (1) I/O error for database at .../Documents/Stores/Model.sqlite.
SQLite error code:1, 'Expression tree is too large (maximum depth 1000)'
CoreData: error: (1) I/O error for database at .../Documents/Stores/Model.sqlite.
SQLite error code:1, 'Expression tree is too large (maximum depth 1000)'
Run Code Online (Sandbox Code Playgroud)
我用来获取用户选择的对象的代码是:
NSManagedObjectContext *context = cdh.context;
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Spot" inManagedObjectContext:context];
NSError *error = nil;
[request setEntity:entity];
request.includesPropertyValues = NO;
NSMutableArray *subPredicatesArray = [NSMutableArray array];
for (NSString *string in uuidStrings)
{
NSPredicate *predicate …Run Code Online (Sandbox Code Playgroud) 我的sqlite在其中一个实体中有项目,我希望根据它们的categoryID检索它们
例如,categoryID 1有7个项目,categoryID 2有5个项目,当我点击IBAction时,它会转到这个方法并根据我的global.clickedTag检索
但我无法检索值,任何想法为什么?
-(NSMutableArray*)fetchItem:array{
[self managedObjectContext];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"IItem" inManagedObjectContext:managedObjectContext];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
//filter here
NSPredicate * predicate = [NSPredicate predicateWithFormat:@"categoryID == %i",myGlobal.clickedTag];
[request setPredicate:predicate];
[request setEntity:entity];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"ID" ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
[request setSortDescriptors:sortDescriptors];
[sortDescriptor release];
NSError *error;
NSMutableArray* mutableFetchCategory = [[managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
if (!mutableFetchCategory) {
// Handle the error.
}
if ([mutableFetchCategory count] > 0)
{
for (NSManagedObject *info in mutableFetchCategory)
{
if …Run Code Online (Sandbox Code Playgroud) 创建一个NSFetchRequest传递给我的时候NSFetchedResultsController我将fetchLimit属性设置为3.
现在最初这似乎工作正常.我可以以任何方式修改前三个返回的对象,这些对象会改变它们的顺序,并且它们都会正确地重新洗牌.当我要么改变一个最初落在前三个之外的对象时会出现问题,现在将它带入前三个,或者只是添加一个新对象以便它出现在前三个中.
我期望发生的事情:插入的物体将其余部分向下推,一个从底部掉落.
实际发生的事情:插入的对象将其余部分向下推,记录数增加到4?
任何人都可以解释这个,或者我应该如何解决这个问题?
我想要一个简单的谓词,它返回所有具有mode = 0的组和组中的注册模式= 0
确切地说,我需要一个谓词来访问嵌套对象属性.不知何故,谓词如下:
[NSPredicate predicateWithFormat:@"mode = 0 AND enrollments.Enrollment.mode = 0"]
Run Code Online (Sandbox Code Playgroud)
上面的谓词是错误的,显然不起作用.
编辑:
我也给了下面的谓词,但是没有成功.
[NSPredicate predicateWithFormat:@"mode = 0 AND ALL ( SUBQUERY(enrollments,$varEnrollment,$varEnrollment.mode = 0))"]
Run Code Online (Sandbox Code Playgroud)
我需要包含所有活动组的结果(group.mode = 0)和所有活动的enrollee(enrolles.mode = 0),但对我来说这个谓词不起作用.

core-data filter nested-set-model nspredicate nsfetchrequest
我有一个非常简单的获取请求,我想执行.我的一个实体有一个名为smartCollectionIds的属性,它的类型是可转换的.我使用此属性来存储一个NSArray简单的字符串.在我的代码中,我使用an NSfetchedResultsController来填充tableview.我使用的谓词如下:
predicate=[NSPredicate predicateWithFormat:@"smartCollectionIds!=nil && (%@ IN smartCollectionIds)",@"87F173A5-863D-4ECE-9673-A61D8F1E01FC-6285-000009A9CBAF3290"];
Run Code Online (Sandbox Code Playgroud)
但是这会导致崩溃,特别是在我执行提取时的品脱.但是,如果我首先使用fetch将所有对象加载到数组中,然后使用上面的谓词将其过滤掉,那么应用程序不会崩溃,我会按预期获得结果.所以基本上 这个代码不起作用
-(void) tryTO
{
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Tweetary" inManagedObjectContext: [[ChubbyEyetwitterEngine sharedInstance] getManagedObjectContextForUse]];
NSPredicate *predicate;
predicate=[NSPredicate predicateWithFormat:@"smartCollectionIds!=nil && (%@ IN smartCollectionIds)",@"87F173A5-863D-4ECE-9673-A61D8F1E01FC-6285-000009A9CBAF3290"];
NSSortDescriptor *secondarySortKey = [[[NSSortDescriptor alloc] initWithKey:@"created_at" ascending:FALSE] autorelease];
NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease] ;
[request setEntity:entity];
[request setPredicate:predicate];
[request setSortDescriptors:[NSArray arrayWithObjects:
secondarySortKey
,nil]];
[request setFetchLimit:30]; //30
NSError *error;
NSArray *results = [[[ChubbyEyetwitterEngine sharedInstance] getManagedObjectContextForUse] executeFetchRequest:request error:&error];
if (error != nil)
{
NSLog(@"Results are %d",[results count]); …Run Code Online (Sandbox Code Playgroud) 我有以下场景.我有一个使用Core Data处理数据的应用程序.我有一个名为"兄弟"的实体,它有3个属性:名称,状态,年龄.
假设我的数据库中有1条记录:
-Name ==> Joe (String)
-Status ==> Married (String)
-Age ==> 28 (Integer)
Run Code Online (Sandbox Code Playgroud)
我有一个UIlabel UItextfield和一个Button.我希望能够在UItextfield上键入名称(在本例中为Joe),按下按钮并在UILabel中显示年龄(在本例中为28).我还想将年龄值存储到变量类型整数中,以便稍后我可以用它进行一些计算.
在我按钮内的代码下面.
NSEntityDescription *entitydesc = [NSEntityDescription entityForName:@"Brothers" inManagedObjectContext:context];
NSFetchRequest *request = [[NSFetchRequest alloc]init];
[request setEntity:entitydesc];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age %d", [self.age.text integerValue]];
[request setPredicate:predicate];
NSError *error;
NSArray *integer = [context executeFetchRequest:request error:&error];
self.displayLabel.text = integer;
Run Code Online (Sandbox Code Playgroud)
更新#1
我更新了按钮内的代码,现在我可以按名称搜索并显示年龄.我仍然期待将年龄作为整数存储到变量中,以便稍后可以使用它.
NSEntityDescription *entitydesc = [NSEntityDescription entityForName:@"Brothers" inManagedObjectContext:context];
NSFetchRequest *request = [[NSFetchRequest alloc]init];
[request setEntity:entitydesc];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"firstname like %@", self.firstnameTextField.text];
[request setPredicate:predicate];
NSError *error;
NSArray …Run Code Online (Sandbox Code Playgroud) nsfetchrequest ×10
core-data ×9
ios ×6
nspredicate ×4
objective-c ×3
swift ×2
xcode ×2
cocoa ×1
filter ×1
group-by ×1
sql ×1
sqlite ×1