标签: nsmanagedobject

CoreData问题: - [NSManagedObject setValue:]:发送到实例的无法识别的选择器

我昨天刚开始使用CoreData,我疯了:(我创建了一个使用CoreData的项目(勾选方框 - 使用CoreData).创建实体,然后为所有实体创建NSManagedObject类(我猜他们创建实体的'setter'和'getter'方法).

现在,我在AppDeletegate中#imported所有这些类,并在我的applicationDidFinishLaunching方法中写了这个:

(订阅是申请中的实体之一)

NSManagedObjectContext *context = [self managedObjectContext];
 Subscriptions *sbs = (Subscriptions *)[NSEntityDescription insertNewObjectForEntityForName:@"Subscriptions" inManagedObjectContext:context];
 [sbs setTitle:@"OK"];
 [sbs setType:@"Tag"];
 [sbs setCode:@"cars"];

 NSError *error = nil;
 if (![context save:&error]) {
  NSLog(@"Couldn't create the subscription");
 }
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我收到此错误

[NSManagedObject setTitle:]:无法识别的选择器发送到实例0x6160550

我不知道为什么会这样.请帮忙!!!在此先感谢大家!

添加Subscriptions
Subscriptions.h 的标题

@interface订阅:NSManagedObject {
}
@property(nonatomic,retain)NSString*Type;
@property(nonatomic,retain)NSDecimalNumber*Read;
@property(nonatomic,retain)NSString*Title;
@property(nonatomic,retain)NSString*Code;
@property(nonatomic,retain)NSDecimalNumber*New;
@结束

我什么都没改变.就像Xcode创建它一样.

iphone core-data objective-c nsmanagedobject ios

18
推荐指数
3
解决办法
3万
查看次数

将NSManagedObject存储在字典中(NSDictionary)

我有一个自定义类,它是一个子类NSManagedObject.我想将它存储在字典中,但是当我尝试这样做时,我收到一个Property list invalid for format: 200错误.

以下是我尝试创建字典的方法:

NSDictionary *dictionary = 
    [NSDictionary dictionaryWithObject: voiceMemo forKey:@"voiceMemo"];
Run Code Online (Sandbox Code Playgroud)

尝试时结果相同

NSDictionary *dictionary = 
    [NSDictionary dictionaryWithObject: (NSData *) voiceMemo forKey:@"voiceMemo"];
Run Code Online (Sandbox Code Playgroud)

但是,在尝试单独保存各个属性时,它可以正常工作:

NSDictionary *dictionary = 
    [NSDictionary dictionaryWithObject: voiceMemo.attribute forKey:@"attribute"];
Run Code Online (Sandbox Code Playgroud)

NSDictionary应该能够存储数据对象,所以我猜,真正的问题是如何将NSManagedObject对象转换为NSData

iphone cocoa-touch nsdictionary nsmanagedobject ios

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

如何在NSManagedObject Swift扩展中创建托管对象子类的实例?

当创建一个扩展助手来NSManagedObject创建一个新的托管对象子类时,swift提供了Self模仿的类型,instancetype这很好,但我似乎无法进行类型转换AnyObject.下面的代码没有编译错误'AnyObject'不能转换为'Self'

救命?

extension NSManagedObject
{
    class func createInContext(context:NSManagedObjectContext) -> Self {
        var classname = className()
        var object: AnyObject = NSEntityDescription.insertNewObjectForEntityForName(classname, inManagedObjectContext: context)
        return object
    }


    class func className() -> String {
        let classString = NSStringFromClass(self)
        //Remove Swift module name
        let range = classString.rangeOfString(".", options: NSStringCompareOptions.CaseInsensitiveSearch, range: Range<String.Index>(start:classString.startIndex, end: classString.endIndex), locale: nil)
        return classString.substringFromIndex(range!.endIndex)
    }

}
Run Code Online (Sandbox Code Playgroud)

core-data nsmanagedobject swift

18
推荐指数
2
解决办法
4379
查看次数

NSManagedObject无法从NSAtomicStoreCacheNode获取属性

我在实体A和实体B(单面)之间有一对一的关系,例如名为bRel.我有NSAtomicStore(MyStore)和NSAtomicStoreCacheNode(MyCacheNode)的子类.在load:MyStore 的方法中,我为实体A和B(aNode和bNode)创建MyCacheNode实例,并为每个实例分配相应的propertyCache字典.propertyCache for aNode包含key的bNode @"bRel".

aManagedObject是正常创建的,并且所有属性都有效.但是当aManagedObject通过它访问bManagedObject时aManagedObject.bRel.someAttribute,bManagedObject仍然是错误的.bManagedObject没有收到awakeFromInsertawakeFromFetch.bNode和bManagedObject共享相同的实例managedObjectID.当bManagedObject访问someAttribute时,bNode处于活动状态.当aManagedObject访问其属性时,它将通过valueForKey:MyCacheNode.当bManagedObject执行时,我们无法实现.

bManagedObject根本就不会发射.

谁能想到我应该在这种情况下检查什么?

attributes entity-relationship core-data objective-c nsmanagedobject

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

核心数据中的抽象实体和继承

我有一个有3个实体的一级方程式比赛的数据模型:

  • RacingActor:抽象实体
  • Pilot:继承自RacingActor
  • 团队:继承自RacingActor

在此输入图像描述

如果我生成NSManagedObject子类来表示这些实体,则生成的代码根本不代表这个设计:

  • 一切都继承自 NSManagedObject
  • 没有什么能阻止我实例化RacingActor
  • Pilot中的团队属性是NSManagedObject团队而非团队

这是预期的行为吗?我应该修复Xcode生成的代码吗?我错过了什么吗?

顺便说一下,我正在使用Xcode 4.3.3

xcode abstract-class core-data nsmanagedobject

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

获取Core Data中NSManagedObject的修改日期?

除了向我的Core Data存储中的每个Entity添加NS​​Date属性之外,是否有一种编程方式来获取任何对象的修改日期?

iphone core-data last-modified nsmanagedobject ios

15
推荐指数
4
解决办法
7358
查看次数

核心数据 - 迭代NSManagedObject的属性

我是核心数据的菜鸟,所以这里.

我有一个核心数据对象,例如学生.

学生具有鬃毛属性,如姓名,年龄,dob,地址等.

现在我需要将所有这些属性显示到表视图中.

是否有任何简单的方法来迭代对象学生?或者我必须将数据转换为某种类型的字典?

如果我需要将其转换为字典,是否有任何支持?或者我必须自己写这个功能.

非常感谢你的帮助,斯蒂芬

core-data nsmanagedobject ios

15
推荐指数
2
解决办法
1万
查看次数

CoreData可选的多对多关系永远不会是零?

Quirk我刚刚发现,并想与这里的任何人确认这是否可以避免.基本上,如果我有一个非常简单的两个实体模型:

在此输入图像描述

随着之间的一对多关系Entity1Entity2.该关系是可选的,在双方都是nullify作为删除规则.但是,如果我插入一个新Entity1children关系值将是一个空集,而不是nil:

NSManagedObject *object = [NSEntityDescription
                           insertNewObjectForEntityForName:@"Entity1"
                           inManagedObjectContext:[self managedObjectContext]];
assert([object valueForKey:@"children"] != nil);
Run Code Online (Sandbox Code Playgroud)

此外,我无法明确将关系设置为nil:

[object setValue:nil forKey:@"children"];
assert([object valueForKey:@"children"] != nil);
Run Code Online (Sandbox Code Playgroud)

我已经在一个新的,最小的项目中验证了这一点,这似乎是一个真正的实现细节.问题是,我希望能够区nil分值(表示当前未知)和空集(真正的零到零关系).CoreData是否真的以合理直接的方式支持这一点?目前似乎没有,这意味着我将不得不寻找另一种(不太直接)的方式来表示我的模型.

谢谢,

Ĵ

null core-data one-to-many relationship nsmanagedobject

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

将新属性添加到现有核心数据实体关系

我不确定我对核心数据关系的理解是否有缺陷,因为我似乎无法实现我想要做的事情.

我创建了2个实体来管理应用程序上的聊天,以及用户和消息之间的一对多关系.因此,用户可以拥有许多消息,但消息只有您的用户(创建者).

在此输入图像描述

我正在尝试在ChatUser添加新消息时更新实体关系,从而建立ChatUserID和ID 之间的连接ChatMessage.我可以这样做,但是当我向现有消息添加新消息时会出现问题userId.当前正在尽管做到的就是增加一个额外的userId进入ChatUser,而不是只添加到现有的关系UserId.

NSManagedObjectContext *context = [self managedObjectContext];
NSError *error = nil;

// 4 . Get Timestamp for Rippll
float timestamp = @([[NSDate date] timeIntervalSince1970]).floatValue;
 NSString * jayID = @"eu-west-1:be6457ce-bac1-412d-9307-e375e52e22ff";

  NSString *message = @"Science string!";

// Create a new managed object
ChatUser *chatUserManagedObject = [NSEntityDescription insertNewObjectForEntityForName:@"ChatUser" inManagedObjectContext:context];
Chat *chatManagedObject = [NSEntityDescription insertNewObjectForEntityForName:@"ChatMessage" inManagedObjectContext:context];
Timeline *timelineManagedObject = [NSEntityDescription insertNewObjectForEntityForName:@"Timeline" inManagedObjectContext:context];

// 3 . Save Timeline
[timelineManagedObject …
Run Code Online (Sandbox Code Playgroud)

core-data objective-c nsfetchedresultscontroller nsmanagedobject ios

15
推荐指数
2
解决办法
1463
查看次数

为什么一个子类NSManagedObject?

我已经阅读了很多关于NSManagedObject,Apple文档以及更多内容的SO问题,但我仍然没有真正得到NSManagedObject的子类 - 它起什么作用?

在Apple文档中,它讨论了我如何不能覆盖一堆方法,不应该使用自定义实例变量,blah和blah(我还不了解其中的一些),等等 - 所以我该怎么做使用NSManagedObject?有哪些限制,必须遵循的指导方针,以及哪些不是限制?

我正在尝试制作一个小盒子绘图程序来学习Core Data,我正在考虑将"draw"方法添加到NSManagedObject的子类中,以便视图可以告诉它们为自己绘制 - 这是允许的吗?

所以,我的一句话中的问题是,子类化NSManagedObject和任何其他类之间的"真正"区别是什么 - Core Data用它做什么?

如果这太宽泛,我会尝试缩小我的问题或者其他什么.

cocoa core-data nsmanagedobject

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