问题列表 - 第36612页

检测对NSManagedObject的特定属性的更改

如何检测对特定属性的更改NSManagedObject?在我的核心数据数据模型中,我有一个Product代表待售产品的实体.该Product实体有几个属性:price,sku,weight,numberInStock,等每当price一个属性Product的变化,我需要执行冗长的计算.因此,我想知道任何更改的price属性,[编辑]即使该更改来自合并另一个线程上保存的上下文.这样做的好方法是什么?我的商店里有成千上万的物品; 显然,向每个人发送一条消息是不可行的. ProductProductaddObserver

我一直用NSManagedObjectContextObjectsDidChangeNotification检测的变化,但它只是通知我一个管理对象发生了变化,而不是该对象的属性发生变化.每当a发生任何变化时,我都可以重做计算Product,但只要不相关的属性发生变化,就会导致无用的重新计算.我正在考虑创建一个Price实体(只包含一个price属性)并使用Product和之间的一对一关系Price.这样,我可以检测到Price对象的更改,以便开始计算.这对我来说似乎过于愚蠢.有没有更好的办法?

更新:

@railwayparade指出我可以使用该changedValues方法NSManagedObject确定每个更新对象的哪些属性已更改.我完全错过了这个方法,如果没有在后台线程上进行更改并将其合并到主线程的上下文中,它将完全解决我的问题.(见下一段.)

我完全错过了关于NSManagedObjectContextObjectsDidChangeNotification工作方式的微妙之处.据我所知,当另一个线程上保存的托管对象上下文合并到主线程上的上下文(使用a mergeChangesFromContextDidSaveNotification:)时,结果NSManagedObjectContextObjectsDidChangeNotification 包含有关当前位于主线程的托管对象上下文中的对象的更改信息.如果更改的对象不在主线程的上下文中,则它不会成为通知的一部分.这很有道理,但不是我所期待的.因此,为了获得更详细的更改信息,我想使用一对一关系而不是属性实际上需要检查后台线程NSManagedObjectContextDidSaveNotification,而不是主线程NSManagedObjectContextObjectsDidChangeNotification.当然,简单地使用changedValues方法会更聪明NSManagedObject正如@railwayparade帮助指出的那样.但是,我仍然存在这样的问题:主线程上合并的更改通知不一定包含后台线程上所做的所有更改.

iphone notifications core-data nsmanagedobject

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

Winforms:为什么事件会在设计时触发?

为什么在设计时显示消息?

我的代码是:

class Class1 : TextBox
{
    public Class1()
    {
        this.Resize += new EventHandler(Class1_Resize);
    }

    void Class1_Resize(object sender, EventArgs e)
    {
        MessageBox.Show("Resize");
    }
}
Run Code Online (Sandbox Code Playgroud)

图片:

替代文字

.net c# events windows-forms-designer winforms

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

如何更改微调器项的字体样式

我有一个带有项目的微调器,通过ArrayAdapter填充.我想为spinner的组合框和列表框中的某些(不是所有)微调器项更改字体样式.我想我需要继承一些东西,但我不明白是什么.我怎样才能做到这一点?

谢谢!

android spinner

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

Bitshifting in Java

I'm trying to understand how bit shift works. Can someone please explain the meaning of this line:

while ((n&1)==0) n >>= 1;
Run Code Online (Sandbox Code Playgroud)

where n is an integer and give me an example of a n when the shift is executed.

java bit-manipulation shift

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

Find the words in a long stream of characters. Auto-tokenize

你如何在长长的角色中找到正确的单词?

输入:

"The revised report onthesyntactictheoriesofsequentialcontrolandstate"
Run Code Online (Sandbox Code Playgroud)

谷歌的输出:

"The revised report on syntactic theories sequential controlandstate"
Run Code Online (Sandbox Code Playgroud)

(考虑到他们产生输出的时间足够接近)

您认为Google如何做到这一点?你会如何提高准确度?

algorithm computer-science nlp string-algorithm

12
推荐指数
2
解决办法
2040
查看次数

D中的向量和动态数组

我认为动态数组是D中向量的替代,但似乎它们没有删除函数(只有关联数组才有),这对于向量来说是一个限制,所以我想知道我是否已经做到了.如果有一个如下的数组,

uint[] a;
a.length = 3;
a[0] = 1;
a[1] = 2;
a[2] = 3;
Run Code Online (Sandbox Code Playgroud)

然后,我发现删除第二个元素的唯一方法是,

a = a[0..1] ~ a[2];
Run Code Online (Sandbox Code Playgroud)

但这似乎并不正确(但也许只是因为我还没有理解这一点).那么有一个向量,还有另一种从动态数组中删除元素的方法吗?

谢谢.

arrays d vector

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

JqG​​rid如何更改编辑表单的宽度?

我不明白如何在JqGrid中更改编辑表单的宽度.我发现选项'宽度'但我不知道如何使用它(没有例子).

jqgrid

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

如何检测uitextfield长度

我试图得到一个uitextfield是空的,如果它是在ibaction中运行以下代码.

float uu = ([u.text floatValue]);
float ss = ([s.text floatValue ]);
float aa = ([a.text floatValue ]);


float x1float = sqrt((uu * uu) +(2*aa*ss));


v.text = [[NSString alloc]initWithFormat:@"%f", x1float];
Run Code Online (Sandbox Code Playgroud)

其中v.text是uitextfield中的文本

iphone uitextfield

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

我们应该严格遵守set/get规则吗?

当我有一个公开暴露的类时,我通常将其成员变量与公共访问器和变换器一起私有(我尽量避免使用mutators来使我的类不可变).

例如,

public class Point {
    private final int x;
    private final int y;

    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }

    public int getX() {
        return x;
    }

    public int getY() {
        return y;
    }
} 
Run Code Online (Sandbox Code Playgroud)

如果课程是私人使用,我通常会

private static class Point {
    public final int x;
    public final int y;

    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }
}
Run Code Online (Sandbox Code Playgroud)

我发现第二种方式对我来说更方便.虽然一个好的IDE可能会有所帮助,但不那么麻烦且不那么打字.

我想知道,如果我有一个公共消费课程,我使用第二种方法是否好?(通过确保我的公开暴露字段将是不可变的).

有什么缺点吗?虽然它似乎违反了OOP封装理论,但从实际的角度来看,我并没有看到真正的危害.

java

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

iPad在表面平坦时的发射方向

我有以下代码:

 -(void)viewWillAppear:(BOOL)animated {

    UIDeviceOrientation orientation = [[UIDevice currentDevice] UIInterface];

    if(orientation==UIDeviceOrientationLandscapeLeft || orientation==UIDeviceOrientationLandscapeRight) {
        NSLog(@"Device Landscape");
    } else {
        NSLog(@"Device Portrait");
    }

 }
Run Code Online (Sandbox Code Playgroud)

这适用于模拟器和设备,但只有当iPad在表面上不平坦时,例如,如果我将iPad放在桌面上并加载视图,它会说出它的肖像,所以我无法检测到方向视图出现.

在调用viewWillAppear时检测界面方向的最佳方法的任何想法?

谢谢

iphone ipad ios

11
推荐指数
2
解决办法
2731
查看次数