小编Emi*_*mil的帖子

多上下文CoreData,按关系批量提取

问题简而言之

由于没有持久存储协调器的NSManagedObjectContext不支持setFetchBatchSize选择器,我使用了这篇文章的解决方案,它适用于某些问题,我想解决.

在此输入图像描述

这是数据库方案和Coredata结构,括号中的术语.测试应用程序有两个屏幕:包含聊天列表的主表和包含消息列表的详细信息表.主屏幕使用获取控制器中的主MOC来显示表中的数据和工人MOC以创建聊天和消息.详细信息屏幕使用Fetch MOC显示表中的数据.

在主屏幕上创建一个带有消息的新聊天并通过调用保存在层次结构中的所有MOC上保存它后,我无法通过选定的聊天详细信息屏幕获取消息.我在控制台中获得的是:"CoreData:annotation:总取指执行时间:0行为0.0000秒".应用程序重启后可以获取此数据.

它似乎与Fetch MOC中的故障消息有关,该故障消息与Chats存在故障关系,该Chats具有与我在Main MOC中的Chats不同的objectID.因为当我在Fetch MOC中获取Chat对象然后用它来查找Messages时,一切正常.

如果有人可以帮我解决这个问题,我会很感激Fetch MOC,或者可以通过我自己的ID字段而不是使用关系来解决所有Object Graph概念并获取数据.

一些代码

这是在didFinishLaunchingWithOptions上完成的Coredata堆栈初始化:

- (void)initializeCoreDataStack
{

    NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"FaultsFetching" withExtension:@"momd"];
    _managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];

    _persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:_managedObjectModel];

    _writerMOC = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
    [_writerMOC setUndoManager:nil];
    [_writerMOC setPersistentStoreCoordinator:_persistentStoreCoordinator];

    _mainThreadMOC = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
    [_mainThreadMOC setUndoManager:nil];
    [_mainThreadMOC setParentContext:_writerMOC];

    _fetchMainThreadMOC = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
    [_fetchMainThreadMOC setUndoManager:nil];
    [_fetchMainThreadMOC setMergePolicy:NSMergeByPropertyStoreTrumpMergePolicy];
    [_fetchMainThreadMOC setPersistentStoreCoordinator:_persistentStoreCoordinator];

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(backgroundContextDidSave:) name:NSManagedObjectContextDidSaveNotification object:_writerMOC];

    NSURL *storeURL = [APP_DOC_DIR URLByAppendingPathComponent:@"FaultsFetching.sqlite"];
    NSError *error = nil; …
Run Code Online (Sandbox Code Playgroud)

core-data objective-c nsfetchedresultscontroller nsmanagedobjectcontext ios

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

Xamarin仅在设备上丢失了自定义objc类别(无法识别的选择器发送到实例)

情况:

  • 我有一个在我的objc静态库中定义的自定义类别:

    @implementation UIViewController (Colorful)
    -(void)changeColor:(UIColor *)color
    {
        self.view.backgroundColor = color;
    }
    @end
    
    Run Code Online (Sandbox Code Playgroud)
  • 它绑定到Xamarin项目:

    [Category, BaseType(typeof(UIViewController))]
    interface UIViewController_Colorful
    {
        [Export ("changeColor:")]
        void ChangeColor(UIColor color);
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 此类别用于以下代码:

    public override bool FinishedLaunching (UIApplication app, NSDictionary options)
    {
        window = new UIWindow (UIScreen.MainScreen.Bounds);
    
        UIViewController vc = new UIViewController ();
        vc.ChangeColor (UIColor.Red);
        window.RootViewController = vc;
    
        window.MakeKeyAndVisible ();
    
        return true;
    }
    
    Run Code Online (Sandbox Code Playgroud)

它在模拟器上工作正常,但在设备上我得到以下异常.即使在库本身内部调用类别,也会出现相同的情况.

我的设置是OS X 10.10,Xcode 6.3,Xamarin studio 5.9.3,Xamarin.iOS 8.10.1.64,Mono 4.0.1

谢谢.

$exception  {Foundation.MonoTouchException: Objective-C exception thrown.  Name: NSInvalidArgumentException Reason: -[UIViewController changeColor:]: unrecognized selector sent to …
Run Code Online (Sandbox Code Playgroud)

c# xamarin.ios ios xamarin

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