标签: nsmanagedobject

从桌面到iphone的核心数据图像

我构建了一个与iPhone应用程序一起使用的简单mac数据输入工具.我最近添加了使用简单绑定通过Image Well添加的缩略图.它是一种可转换的数据类型,似乎工作正常.

但iPhone应用程序不会显示图像.该属性不为null但我无法显示图像.以下是cellForRowAtIndexPath

static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}

NSManagedObject *entity = nil;
if ([self.searchDisplayController isActive])
    entity = [[self filteredListContent] objectAtIndex:[indexPath row]];
else
    entity = [fetchedResultsController objectAtIndexPath:indexPath];
cell.textLabel.text = [entity valueForKey:@"name"];
//cell.imageview.image = [UIImage imageNamed:@"ImageB.jpeg"]; //works fine
cell.imageView.image = [entity valueForKey:@"thumbnail"];//no error, but no file

return cell;
Run Code Online (Sandbox Code Playgroud)

我正在考虑问题是可转换的(我使用的是默认的NSKeyedUnarchiveFromData),或者我是如何调用缩略图的.我是新手,所以任何帮助都将不胜感激.

iphone core-data imageview nsmanagedobject

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

最佳实践 - iOS中的NSManagedObjectContextObjectsDidChangeNotification

我正在使用Core Data编写我的第一个综合应用程序,我想看看跟踪各种对象更改/更新/删除的最佳方法是什么.例如,我有一个Notes实体和一个Location实体,以及它们之间的一对一关系,这个想法是每个音符都可以标记其位置.然后我有一个带有fetchedResultsController的UITableView驱动笔记列表(你可以添加新笔记并在其中附加日期和位置),但是我有2个其他视图控制器,一个带有地图视图,另一个带有日历视图.地图视图将获取位置中的所有位置并将其显示在地图上.日历视图基本上再次从Notes获取所有数据,并在日历视图中显示它.如何在日历和地图视图中跟踪Notes和Location的更改?在viewDidLoad中很容易将它们加载一次,但是我应该如何跟踪所有更改,以便当用户重新访问mapview时(例如)他/她也会看到最新数据.

我解读的一种方法是在地图视图和日历视图中监听NSManagedObjectContextObjectsDidChangeNotification中的通知.这似乎从托管上下文返回所有插入,删除和更新的对象,每次都有保存.然后我可以浏览这些对象,看看是否需要更新我的视图.这就是我在考虑这样做的方式:

在MapViewController viewDidLoad中:

[[NSNotificationCenter defaultCenter]
    addObserver: self
    selector: @selector(objectChangedNotificationReceived:)
    name: NSManagedObjectContextObjectsDidChangeNotification
    object: context];
Run Code Online (Sandbox Code Playgroud)

然后:

- (void) objectChangedNotificationReceived: (NSNotification *) notification
{
    NSArray* insertedObjects = [[notification userInfo]
                                objectForKey:NSInsertedObjectsKey] ;
    NSArray* deletedObjects = [[notification userInfo]
                               objectForKey:NSDeletedObjectsKey] ;
    NSArray* updatedObjects = [[notification userInfo]
                               objectForKey:NSUpdatedObjectsKey] ;
    NSLog(@"insertObjects: %@", [insertedObjects description]);
    NSLog(@"deletedObjects: %@", [deletedObjects description]);
    NSLog(@"updatedObjects: %@", [updatedObjects description]);

    for (NSManagedObject *obj in insertedObjects) {
        if ([obj class] == [Location class]) {
            NSLog(@"adding a new location");
            Location *locationObj = (Location *) obj;
            [self.mapview …
Run Code Online (Sandbox Code Playgroud)

core-data objective-c nsmanagedobject nsmanagedobjectcontext

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

为什么我无法在NSManagedObject子类中覆盖isEqual?

我有两个自定义NSManagedObject类:NotesTags.

当我覆盖类中的isEqual:函数时,Tags我收到如下错误消息:

实体'标签'的'类'标签'具有非法覆盖NSManagedObject -isEqual:'

为什么会这样?

iphone objective-c nsmanagedobject ios4

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

在没有initWithEntity的情况下使用NSManagedObject类:?

我的问题类似于:创建NSManagedObject派生类时出现问题

我在Core Data中设置了一个NSManagedObject,并为它设置了一个类.但是,我不想创建一个相同的NSObject类,而是想使用NSManagedObject类,但我不想创建实体并保存它.我只想将它用于数组,只有当我需要在Core Data中保存对象时我才想使用它insertEntity:

Store*store = [[Store alloc] init];

它给了我以下错误: CoreData: error: Failed to call designated initializer on NSManagedObject class 'Store'

有没有办法让子类或以某种方式使用NSManagedObject类/属性来分配我刚刚临时用于表的对象?

谢谢.

core-data nsmanagedobject ios

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

将非持久性变量添加到nsmangedobject

我有一个NSManagedObject的子类,我想添加几个ivars来跟踪一些簿记.我不希望这些变量持续存在,因此我不将它们作为数据模型的一部分包含在内.

我无法找到正确的方法.

  • 我应该在我的班级中创建ivars,创建相应的属性,然后在实现中合成它们吗?
  • 我应该不创建ivars,而只是声明属性,然后@dynamic在implmentation中的属性?
  • 我应该采取其他一些方法吗?

而且我应该做在我的NSManagedObject子类所有的定制,或者我应该创建我的子类的子类,因此,如果我改变我的数据模型,我不会失去我的所有自定义时,我得到的Xcode生成我的NSManagedObject子类自动?

谢谢!

core-data objective-c nsmanagedobject

10
推荐指数
2
解决办法
2740
查看次数

删除核心数据中的对象

我的核心数据模型中有一个实体,如下所示:

@interface Selection : NSManagedObject

@property (nonatomic, retain) NSString * book_id;
@property (nonatomic, retain) NSString * contenu;
@property (nonatomic, retain) NSNumber * page_id;
@property (nonatomic, retain) NSNumber * nbrOfOccurences;
@property (nonatomic, retain) NSString * next;
@property (nonatomic, retain) NSString * previous;
Run Code Online (Sandbox Code Playgroud)

我创建了很多Selections并将它们保存在Core Data中,现在我想删除一些带有一些标准的选择.例如,Selection如果匹配以下内容,我想删除一个对象:

content = test
page_id = 5
book_id = 1331313
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做?

core-data objective-c nsmanagedobject ios

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

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

我尝试扩展NSManagedObject.使用XCode我创建了MyBox.m和MyBox.h(直接来自xcdatamodel文件).

然后我修改了这些文件:

#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>


@interface MyBox : NSManagedObject

@property (nonatomic, retain) NSDate * endDate;
@property (nonatomic, retain) NSNumber * globalId;
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSDate * startDate;

-(NSString *)sayHello;

@end
Run Code Online (Sandbox Code Playgroud)

#import "MyBox.h"
@implementation MyBox

@dynamic endDate;
@dynamic globalId;
@dynamic name;
@dynamic startDate;

-(NSString *)sayHello {
    return @"hello";
}  

@end
Run Code Online (Sandbox Code Playgroud)

我可以获取所有myBoxes

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription
                                   entityForName:@"MyBox" inManagedObjectContext:context];
    [fetchRequest setEntity:entity];

NSMutableArray *myBoxes = [context executeFetchRequest:fetchRequest error:&error];
Run Code Online (Sandbox Code Playgroud)

但后来我打来电话

MyBox …
Run Code Online (Sandbox Code Playgroud)

core-data objective-c nsmanagedobject

10
推荐指数
2
解决办法
7252
查看次数

在保持NSFetchedResultController功能的同时保存单个CoreData实体(不是整个上下文)

哎呀,对不起这么长的头衔.

我有一个托管对象上下文,我存储从两个不同位置派生的歌曲.我从手机上的持久存储中获取了一些歌曲(使用Core Data),我从在线数据库中提取了一些歌曲.这两首歌都属于同一个MananagedObject子类.我想这两个歌曲是在一个单一的情况下,因为我想他们两个出现在与NSFetchedResultsController连接的表视图.

当我想保存其中一首歌时会出现问题.我不想将从在线数据库中提取的所有歌曲保存到手机中.我只想保存单曲,所以简单的[moc save]不起作用.另一个问题是,在我保存单曲之后,我仍然希望从在线播放的歌曲在上下文中(但是再次,不保存).我相信我有几个不同的选择:

1)是否可以将NSFetchedResults控制器连接到多个上下文?

2)我可以将从在线数据库中提取的所有歌曲移动到单独的临时上下文中,保存在原始上下文中,然后将所有歌曲移回.(请参阅:如何将NSManagedObject从一个上下文复制或移动到另一个上下文?)

3)记住在线歌曲的所有键值对,从上下文中删除在线歌曲,保存原始上下文,根据保存的键值对将所有在线歌曲插回到原始上下文中.

4)我是一个巨大的n00b,我更容易丢失一些东西.

谢谢!

core-data nsfetchedresultscontroller nsmanagedobject nsmanagedobjectcontext ios

9
推荐指数
2
解决办法
2985
查看次数

具有布尔属性的CoreData实体保存为NSNumber对象

想知道是否有其他人遇到过这个问题,或者是否有原因并且我做错了什么.

我有一个CoreData应用程序.在模式中,我有一个'content'实体,其'unlocked'属性设置为Boolean.

但是,当我通过Xcode保存实体的Obj C类时,解锁在content.h中显示为:

@property (nonatomic, retain) NSNumber * unlocked;
Run Code Online (Sandbox Code Playgroud)

如果我在content.h中将其更改为布尔值,我会收到ARC编译错误.但是,如果我在尝试获取它时将其作为NSNumber对象保留,它会不一致地返回(如果我有一个NSLog打印它,它会在每次运行时返回不同的值).

我可以找出一个相当明显的解决方法,将解锁为NSString设置为"是"或"否"并在相关点进行比较,但我想知道是否有人知道为什么会发生这种情况或者是否有办法将它保持为布尔值.

提前致谢.

core-data nsmanagedobject ios

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

核心数据查找或创建最有效的方式

我有大约10000个实体对象' Message'.当我添加一个新的' Message'我想首先看它是否存在 - 以及它是否只是更新它的数据,但如果它不创建它.

现在,"查找或创建"算法可以将所有Message对象保存objectID在一个数组中,然后通过它们进行过滤并获取消息existingObjectWithID:error:

这工作正常,但在我的情况下,当我使用existingObjectWithID:获取'消息'时,然后尝试通过设置'消息'对象的属性并调用保存来设置和保存属性:在它的上下文中它不能正确保存它.有没有人遇到这样的问题?

是否有更有效的方法来制作查找或创建算法?

cocoa-touch core-data objective-c nsmanagedobject nsmanagedobjectcontext

9
推荐指数
2
解决办法
2517
查看次数