RestKit + MagicalRecord + Swift

RestKit + MagicalRecord + Swift

RestKit 与 MagicalRecord 兼容,但它需要一些技巧才能使其正常工作:

See: RKMagicalRecord / RKMRAppDelegate.m @ L15-L18

// Use a class extension to expose access to MagicalRecord's private  setter methods

@interface NSManagedObjectContext ()
+ (void)MR_setRootSavingContext:(NSManagedObjectContext *)context;
+ (void)MR_setDefaultContext:(NSManagedObjectContext *)moc;
@end

所以他们使用了一种有点古怪的方法来访问私有 MR_setRootSavingContext 方法。

我知道在 swift 中我可以定义扩展,但是我必须实现它们,我怎样才能在 swift.

中实现相同的解决方法

或者更一般地说,我如何设置 Magical Record 以使用由 RestKit 创建的 NSManagedObjectContext

简单地(可能不好)它创建一个桥接文件

并在那里添加

@interface NSManagedObjectContext ()
+ (void)MR_setRootSavingContext:(NSManagedObjectContext *)context;
+ (void)MR_setDefaultContext:(NSManagedObjectContext *)moc;
@end

此处为创建桥接文件的示例 http://ios-blog.co.uk/tutorials/how-to-create-an-objective-c-bridging-header/

您需要做什么 定义名称为 NSMangedObjectContext_MagicalRecordify 的头文件

内容:

@interface NSManagedObjectContext ()
+ (void)MR_setRootSavingContext:(NSManagedObjectContext *)context;
+ (void)MR_setDefaultContext:(NSManagedObjectContext *)moc;
@end

然后在桥接头文件管理器中,导入:

#import "NSMangedObjectContext_MagicalRecordify.h"

然后您可以在 swift 文件中访问这些私有方法。