问题列表 - 第33885页

NSTreeController基于瞬态isRoot异常获取谓词

我的基于文档的Cocoa应用程序使用绑定到文档的Core Data存储的NSOutlineView/NSTreeController组合.我的NSTreeController有fetch谓词isRoot == YES. isRoot是一个临时布尔属性,默认值为NO.我的根模型的awakeFromInsert调用:

[self setIsRoot:[NSNumber numberWithBool:YES]];

我能够很好地将对象添加到层次结构中,但是当我尝试加载刚刚保存的文档时,我得到一个例外:

[<NSDictionaryMapNode 0x1001a8190> valueForUndefinedKey:]: this class is not key value coding-compliant for the key isRoot.

我可以解决这个异常并成功加载一个新保存的文件,如果我isRoot在xcdatamodel中将属性更改为非瞬态,但基于我对瞬态标志的理解它不应该导致问题,这实际上不是应该持久化的数据类型.

我也尝试-isRoot在NSManagedObject子类中实现以返回适当的固定值,以及在其中进行相同的setIsRoot:调用awakeFromFetch,两者都无济于事.

还有其他一些我遗漏的微妙之处吗?我无法想象fetch谓词不支持瞬态属性.我不太了解Core Data的内部工作原理,但它似乎很有趣,它试图查找isRoot特定于商店的类而不是我的NSManagedObject子类.

cocoa core-data nstreecontroller

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

7
推荐指数
3
解决办法
6965
查看次数

C仍在游戏引擎中广泛使用吗?

标题有点用词不当,我的意思是"C with classes".

让我解释一下,最近我买了一本书ShaderX7,它带有一个关于阴影映射技术的文章的Unigine引擎的精简版(和旧版).

当我意识到,虽然作者使用的是C++和继承以及所有C++的优点,但是我正在探讨代码,大多数方法内容基本上都是C风格的代码; 例如:

int Shader::get_param(const char *name,char *src,String &dest) const {
    char *s = src;
    int size = (int)strlen(name);
    while(*s) {
        if(!strncmp(s,name,size)) {
            if((s == src || strchr("\n\r",*(s - 1))) && strchr(" \t",*(s + size))) {
                src = s;
                s += size;
                dest.clear();
                while(*s && strchr(" \t",*s)) s++;
                while(*s && strchr(" \t\n\r",*s) == NULL) dest += *s++;
                if(dest.isEmpty()) {
                    Log::error("Shader::get_param(): can't get \"%s\" \n",name);
                    return 0;
                }
                memmove(src,s,strlen(s) + 1);
                return 1;
            }
        }
        s++;
    }
    return …
Run Code Online (Sandbox Code Playgroud)

c c++ game-engine

14
推荐指数
2
解决办法
7008
查看次数

自定义RS485协议

我正在为分布式系统中的串行通信编写一个简单的多点RS485协议.我正在使用一个可寻址的模型,其中从设备被给予一个20ms的窗口来响应.主uC轮询连接的设备以​​进行更新,并相应地做出响应.我使用了校验和并采取必要的超限预防措施,以确保连接的设备不会响应格式错误的消息.事实证明,这种方法在大约99%的情况下都有效,但如果在通信会话期间引入了新设备,则会丢失数据包.插入新设备"热"将对从设备监控的信号产生负面影响,如果只是在极短的时间内.我是工程的软件方面,但是如何在不尝试重新创建TCP的情况下缓解这种情况呢?我们使用轮询模型,因为它很快并且对我们的应用程序来说工作得很好,不需要RTOS功能.我在每个cpu上有很多周期,用基本术语来思考.

c embedded irq rs485

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

VIM和Scala - 缩进问题?

我下载了Scala 2.8,安装了包含的vim脚本,并尝试输入一些Scala代码.当我输入val x = 1 + 2并按下ENTER时,缩进变为低于v.当我输入时val x = (1 + 2),缩进低于x!

如果任何人都使用VIM 进行Scala,很久以前就会看到这个bug.或者我是唯一一个看到这个的人?

vim scala

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

如何安全快速地从int中提取数字?

我们目前有一些代码从int中提取数字,但是我需要将它转换为没有snprintf的平台,我担心缓冲区溢出.我已经开始编写自己的便携式(和优化的)snprintf但我被告知在这里询问以防有人有更好的想法.

int extract_op(int instruction)
{ 
    char buffer[OP_LEN+1];
    snprintf(buffer, sizeof(buffer), "%0*u", OP_LEN, instruction);
    return (buffer[1] - 48) * 10 + buffer[0] - 48;
}
Run Code Online (Sandbox Code Playgroud)

我们正在使用C字符串,因为速度非常重要.

c c++ digits

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

需要postgresql查询来分组和订购

我有一个客户表如下:

customername, ordername, amount
=============================
bob, book,     20
bob, computer, 40
steve,hat,     15
bill, book,    12
bill, computer, 3
steve, pencil, 10
bill, pen,      2
Run Code Online (Sandbox Code Playgroud)

我想运行查询以获得以下结果:

customername, ordername, amount
=============================
bob,   computer, 40
bob,   book,     20
bob,   ~total~,  60
steve, hat,      15
steve, pencil, 10
steve, ~total~,25 
bill, book,    12
bill, computer, 3
bill, pen,      2 
bill, ~total~, 17
Run Code Online (Sandbox Code Playgroud)

我希望每个客户的金额从最大订购到最小,新订单名称为"~total~"(必须始终是每个客户的最后一行),结果为同一客户的所有金额的总和.所以,在上面的例子中,bob应该是第一个,因为总数= 60,steve第二个(总数= 25)并且计算第三个(总数= 17).

sql postgresql

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

是否可以将HTTParty请求结果作为对象使用

我想知道是否可以将HTTParty请求结果作为对象使用.

目前我使用字符串键来访问结果的值:result["imageurl"]result["address"]["street"]

如果我使用JavaScript,我可以简单地使用:result.imageurlresult.address.street

ruby xml json ruby-on-rails httparty

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

不使用WiFi通过3G网络发送HTTP请求?

首先,Android手机连接3G网络和wifi.这时我想通过3G网络发送http请求而不使用wifi.我该怎么做?

android http

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

按索引计算的numpy数组的累积总和

假设您有一组需要求和的值

d = [1,1,1,1,1]
Run Code Online (Sandbox Code Playgroud)

和第二个数组,指定哪些元素需要加在一起

i = [0,0,1,2,2]
Run Code Online (Sandbox Code Playgroud)

结果将存储在一个新的大小数组中max(i)+1.因此,例如i=[0,0,0,0,0],相当于将所有元素相加d并将结果存储在0新的大小数组的位置1.

我尝试使用这个来实现

c = zeros(max(i)+1)
c[i] += d
Run Code Online (Sandbox Code Playgroud)

但是,该+=操作仅添加每个元素一次,从而产生意想不到的结果

[1,1,1]
Run Code Online (Sandbox Code Playgroud)

代替

[2,1,2]
Run Code Online (Sandbox Code Playgroud)

如何才能正确实现这种求和?

python numpy sum indices

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