标签: magicalrecord

失去我的思想因为获取核心数据总是返回错误

好的,直截了当......

这是我第一次使用Magical Panda的神奇记录我跟随来自http://yannickloriot.com/2012/03/magicalrecord-how-to-make-programming-with-core-data-pleasant/的 tutroial

这是我的代码

Person.h

@property (nonatomic, retain) NSString * firstname;
@property (nonatomic, retain) NSString * lastname;
@property (nonatomic, retain) NSNumber * age;
Run Code Online (Sandbox Code Playgroud)

AppDelegate.M

@implementation AppDelegate

- (void)dealloc
{
    [_window release];
    [_viewController release];
    [super dealloc];
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
     [MagicalRecord setupCoreDataStackWithStoreNamed:@"MyDatabase.sqlite"];
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    // Override point for customization after application launch.
    self.viewController = [[JASidePanelController alloc] init];
    self.viewController.shouldDelegateAutorotateToVisiblePanel = NO;
  //  self.viewController = [[[ViewControllerCenter alloc] initWithNibName:@"ViewController" bundle:nil] autorelease];
    self.viewController.centerPanel = …
Run Code Online (Sandbox Code Playgroud)

core-data ios magicalrecord

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

在今天的扩展程序中创建记录并在应用程序中更新时的更改在今天的扩展程序中不可见

只是我有一个应用程序和今天的扩展。我还有两个实体:GoalService

@objc(Goal)
class Goal: NSManagedObject {

    @NSManaged var identifier: String
    @NSManaged var startDate: Date
    @NSManaged var endDate: Date

    private var services: [Service] {
    
        let predicate = NSPredicate(format: "date >= %@ && date <= %@", startDate as NSDate, endDate as NSDate)

        return Service.mr_findAll(with: predicate) as! [Service]
    }

    var duration: Int64 {
        return services.reduce(0) { $0 + $1.duration }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我在今天的扩展程序中创建service相关并goal在应用程序中更新它时,更新的结果在今天的扩展程序中不可见,而在应用程序中正确显示。为什么?

这是我在扩展或扩展中创建和更新记录的方式:

MagicalRecord.save({ context in
        
    Service.createOrUpdate(withDuration: duration, date: Date(), identifier: identifier, …
Run Code Online (Sandbox Code Playgroud)

core-data ios magicalrecord swift

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

如何使用魔法记录获取记录时获得"最新记录"

获取记录时如何获取最新记录?

例如:

  • 第一次迭代我用对象名称Country保存"Singapore",
  • 第二次迭代我用对象名称Country保存"USA",第二次

现在当我拿它

SomeDatabase *Country = [SomeDatabase MR_findFirst];

NSLog(@"Country Name---->%@",Country.Name); 
Run Code Online (Sandbox Code Playgroud)

我得到"新加坡",

我想把最后一条记录插入到coredata,它应该是"USA".

core-data ios magicalrecord

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

使用魔法记录获得不同实体的数量

我正在尝试将魔法记录合并到我的项目中,我很喜欢它,但有一件事我无法弄清楚如何处理是获取请求的计数.我知道你可以执行一个获取请求,但据我所知,Magical Record无法对一个执行计数.我觉得它必须是一个请求的原因是因为我只想要不同对象的数量.

有谁知道有效地做到这一点的方法?即,这种方式不需要我实际对对象执行获取并获取结果数组的计数.这个fetch必须尽可能快地运行,因为它有可能经常被调用.

objective-c ios magicalrecord

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

使用Magic Record在单独的线程上保存核心数据

我正在使用魔法记录来帮助核心数据保存和多线程.

我用GCD开始一个新线程.在那个新线程中,我检查一个实体是否存在; 如果不是,我想创建一个新的并保存.

saveUsingCurrentThreadContextWithBlock^(NSManagedObjectContext *localContext){}如果在非主线程上调用它,将返回主线程保存吗?

或者我应该将上下文传递给新线程?

编辑:

在主线程上,我创建一个MBProgress指标并创建一个新线程:

MBProgressHUD *HUD = [MBProgressHUD showHUDAddedTo:self.mapView animated:YES];

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{

    Person *person = [Person MR_findFirstByAttribute:NAME withValue:self.user.username];

    if (person == NULL) {
        NSLog(@"SEPERATE THREAD | person %@ does not exist, creating", self.user.username);
        person = [Person MR_createEntity];
        person.name = self.user.username;
        person.uid = self.user.UID;

        [[NSManagedObjectContext MR_contextForCurrentThread] MR_saveOnlySelfWithCompletion:^(BOOL success, NSError *error) {
            [MBProgressHUD hideHUDForView:self.mapView animated:YES];

            Person *person = [Person MR_findFirstByAttribute:NAME withValue:self.user.username];

            if (person) {
                NSLog(@"COMPLETION BLOCK | person exists: %@", person.name);
            }
        }];
    }
    else { …
Run Code Online (Sandbox Code Playgroud)

objective-c ios magicalrecord

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

如何在没有错误错误的情况下删除每个Core Data实体?

如何刷新该死的Core Data对象?

请原谅,我只想删除对象20分钟.删除就好了,但Core Data会在一段时间后引发异常.

我到目前为止尝试过:

删除所有对象(MR_truncateAll),然后保存.

删除所有对象,处理挂起的更改,保存.

关闭撤消管理器,删除,转回撤消管理器.

删除Core Data sqlite文件,销毁上下文,然后重新创建.

使用[MagicalRecord cleanUp],删除核心数据sqlite文件.


尽管如此,当我想创建对象时,经过2-3次尝试后,我将获得Faulting,然后因故障而崩溃.

CoreData could not fulfill a fault for '0xd000000000840002 <x-coredata://...

(
    0   CoreFoundation                      0x0000000102016795 __exceptionPreprocess + 165
    1   libobjc.A.dylib                     0x0000000101d79991 objc_exception_throw + 43
    2   CoreData                            0x0000000100265a93 _PFFaultHandlerLookupRow + 1075
    3   CoreData                            0x00000001002f33a3 -[NSManagedObject(_NSInternalMethods) _updateFromRefreshSnapshot:includingTransients:] + 243
    4   CoreData                            0x0000000100297563 -[NSManagedObjectContext(_NestedContextSupport) _copyChildObject:toParentObject:fromChildContext:] + 771
    5   CoreData                            0x000000010029701b -[NSManagedObjectContext(_NestedContextSupport) _parentProcessSaveRequest:inContext:error:] + 1019
    6   CoreData                            0x00000001002fd243 __82-[NSManagedObjectContext(_NestedContextSupport) executeRequest:withContext:error:]_block_invoke + 563
    7   libdispatch.dylib                   0x0000000102ce005a …
Run Code Online (Sandbox Code Playgroud)

sqlite core-data ios magicalrecord

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

在NSManagedObject上调用MR_createEntity时出错

当我只是调用MR_createEntity时,我得到一个exc_bad_access错误.由于我是magicalRecord的新手,我无法找到bug的来源.

代码 :

TMTAppDelegate.m

//TMTAppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    [MagicalRecord setupAutoMigratingCoreDataStack];



    NSArray *trajetsRawArray = @[@{@"km" : @125, @"mn":@110, @"adressStart" : @"Metz", @"adressEnd" : @"Gérardmer", },
                                 @{@"km" : @4, @"mn":@14, @"adressStart" : @"Plappeville", @"adressEnd" : @"Metz"},
                                 @{@"km" : @312, @"mn":@200, @"adressStart" : @"Metz", @"adressEnd" : @"Paris"},
                                 @{@"km" : @413, @"mn":@236, @"adressStart" : @"Marseille", @"adressEnd" : @"Toulouse"},
                                 @{@"km" : @2, @"mn":@4, @"adressStart" : @"Ban-St-Martin", @"adressEnd" : @"Metz"},
                                 @{@"km" : @65, @"mn":@63, @"adressStart" : @"Metz", @"adressEnd" : @"Gérardmer"}
                                 ];

    //[[UINavigationBar appearance] …
Run Code Online (Sandbox Code Playgroud)

core-data objective-c ios magicalrecord

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

如何使用临时对象CoreData?

我使用lib MagicalRecord(https://github.com/magicalpanda/MagicalRecord)进行CoreData.framework.

我不明白如何使用临时对象.

如何为临时对象创建NSManagedContext以及在关闭控制器后是否删除每个NSManagedObject?

cocoa-touch core-data magicalrecord

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

MagicalRecord saveWithBlock的Swift语法

在objC中,saveWithBlock的方法是

[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) {
        // This block runs in background thread
        } completion:^(BOOL success, NSError *error) {
        // This block runs in main thread
        }];
Run Code Online (Sandbox Code Playgroud)

在我的一生中,我无法正确使用正确的Swift块/关闭语法。不知道为什么这没引起我的注意。有人可以伸出援助之手,制作出上述内容的快速版本吗?

core-data objective-c-blocks magicalrecord swift

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