小编Mik*_*ike的帖子

在CoreData保存之前确定哪些字段已更改

//设置通知

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

//后来

- (void)dataChanged:(NSNotification *)notification{
  NSDictionary *info = notification.userInfo;
  NSSet *insertedObjects = [info objectForKey:NSInsertedObjectsKey];
  NSSet *deletedObjects = [info objectForKey:NSDeletedObjectsKey];
  NSSet *updatedObjects = [info objectForKey:NSUpdatedObjectsKey];
Run Code Online (Sandbox Code Playgroud)

无论如何要从updatedObjects确定哪些字段实际更改了?

谢谢,迈克尔

core-data objective-c nsmanagedobjectcontext ios

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

如何为xcode 4.5默认禁用自动布局?

这里有一个问题:Xcode 4.5破坏了XIB?说明了xcode 4.5创建无法在ios5上运行的nib文件的问题和解决方案.

有没有人有一个解决方案来阻止自动布局复选框默认为打开?我担心在开发过程中,我会忘记取消选中该框.

在此输入图像描述

iphone xcode ios5 ios6 xcode4.5

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

核心数据:3表加入?

我知道Core Data不是一个数据库,并且存在许多差异.这是一个吗?

在数据库中,我通常会有以下内容

A - >> B - >> C

"A"有很多"B",有很多"C"

查询"给我所有有c.attr ='X'的A很容易写成:

select * from a, b, c where a.id = b.aid and b.id = c.bid and c.attr = 'X'
Run Code Online (Sandbox Code Playgroud)

在Core Data中,我想做同样的事情,但使用谓词如:

NSPredicate *predicate = 
  [NSPredicate predicateWithFormat:@"ANY bs.cs.attr = %@", "X"];
[frequest setEntity:entityA];
[frequest setPredicate:predicate];
Run Code Online (Sandbox Code Playgroud)

这样做会导致错误:'NSInvalidArgumentException',原因:'这里不允许多对多键'

我是否正确解释为什么数据库调用多表连接存在限制?

我用Google搜索,无法找到明确的答案.

我目前对此查询的解决方案如下:

NSPredicate *predicate = 
  [NSPredicate predicateWithFormat:@"ANY cs.attr = %@", "X"];
...
NSArray *bs = //execute fetch
for (B *b in bs) {
  //add b.a into an array
}
//return array
Run Code Online (Sandbox Code Playgroud)

有没有更好的办法?提前感谢您的考虑.

sql iphone core-data ipad

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

范围栏按钮可用于过滤结果而无需激活UISearchBar的键盘吗?

我在加载时显示带有搜索栏和范围栏按钮的UITableView.当用户点击示波器条按钮时,将显示键盘并且搜索栏将获得焦点(成为第一响应者).

是否可以允许使用示波器条按钮来过滤表项而不显示键盘?用户可以通过在搜索文本输入字段中专门点击来显示键盘.

iphone objective-c uitableview uisearchbar ios

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