标签: nsfetchrequest

使用NSFetchRequest(CoreData)填充数组

我为iPad创建了一个使用Apple "Use CoreData"模板的项目.

我定制了几个东西,例如对象的名称,但系统保持不变.

Apple使用的是一个简单MasterViewController.hUITableViewControllerDetailViewController.h一个简单的UIViewController.一旦你选择了其中的一个对象UITableView,MasterViewController.h就会将其属性赋予DetailViewController.

现在的问题是:

我创建了第三个视图控制器,命名为ResultsViewController.h应显示所有数据(对象的属性).

我想用一个或多个NSArray(s),它应该包含我的所有数据(而不仅仅是选择,但所有.因此,如果你创建了5个对象,你想拥有5倍NSArray).

(1)如何获取xcoredatamodel能够访问它们的值ResultsViewController?发送获取请求对我不起作用?

(2)如何确定我在UITableView(MasterViewController.h)中创建的对象数量?

CoreData结构:

简单,一个实体,几个属性,就是这样!

非常感谢!

xcode core-data uiviewcontroller nsfetchrequest ios

1
推荐指数
1
解决办法
6401
查看次数

NSArray中的核心数据故障

我有一个方法执行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

1
推荐指数
1
解决办法
705
查看次数

如何在SWIFT中的IOS CORE-DATA请求中使用SQL GROUP BY和SUM函数?

我有一个表(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来做到这一点.

谢谢

sql group-by core-data nsfetchrequest swift

1
推荐指数
1
解决办法
5244
查看次数

NSPredicate:获得最高价值

我有以下内容:

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格式?

nssortdescriptor nspredicate nsfetchrequest ios swift

1
推荐指数
1
解决办法
1024
查看次数

获取超过1000个对象时,核心数据崩溃

当我尝试从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)

core-data objective-c nsfetchrequest ios

1
推荐指数
1
解决办法
162
查看次数

使用谓词获取核心数据值

我的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)

sqlite xcode core-data nspredicate nsfetchrequest

0
推荐指数
1
解决办法
7775
查看次数

NSFetchedResultsController试图限制显示的记录数

创建一个NSFetchRequest传递给我的时候NSFetchedResultsController我将fetchLimit属性设置为3.

现在最初这似乎工作正常.我可以以任何方式修改前三个返回的对象,这些对象会改变它们的顺序,并且它们都会正确地重新洗牌.当我要么改变一个最初落在前三个之外的对象时会出现问题,现在将它带入前三个,或者只是添加一个新对象以便它出现在前三个中.

我期望发生的事情:插入的物体将其余部分向下推,一个从底部掉落.

实际发生的事情:插入的对象将其余部分向下推,记录数增加到4

任何人都可以解释这个,或者我应该如何解决这个问题?

core-data nsfetchedresultscontroller nsfetchrequest ios

0
推荐指数
1
解决办法
1340
查看次数

NSPredicate在嵌套对象/ NSSet上过滤NSFetchRequest期间的结果

我想要一个简单的谓词,它返回所有具有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

0
推荐指数
1
解决办法
4416
查看次数

如何使用Coredata和NSFetchRequest进行"IN"搜索时格式化NSPredicate

我有一个非常简单的获取请求,我想执行.我的一个实体有一个名为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 objective-c nspredicate nsfetchrequest ios

0
推荐指数
1
解决办法
969
查看次数

核心数据NSFetchrequest整数

我有以下场景.我有一个使用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)

core-data objective-c nsfetchrequest ios

0
推荐指数
1
解决办法
1911
查看次数