问题列表 - 第21052页

代表人数 iPhoneOS中的通知

我试图从子视图控制器调用我的根视图控制器中的方法,这样当我更改我的选项时,它们将自动更新根视图,这将更新几个其他视图控制器.对于第二部分,我使用了通知,但为此我首先尝试使用委托,因为它(所以我一直相信)是一个很好的编程习惯.我无法使其工作,并且知道我可以轻松地设置另一个通知来完成这项工作.我应该继续尝试实施代理还是仅使用通知?

iphone notifications delegates

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

如何进行data.table合并操作

注意:这个问题和以下答案涉及data.table版本<1.5.3; v.1.5.3于2011年2月发布以解决此问题.查看更新的处理(03-2012):将外键上的SQL连接转换为R data.table语法


我一直在挖掘data.table包的文档(data.frame的替代品,对于某些操作来说效率更高),包括Josh Reich在纽约R Meetup(pdf)上关于SQL和data.table的演示,但是无法想象这完全琐碎的操作.

> x <- DT(a=1:3, b=2:4, key='a')
> x
     a b
[1,] 1 2
[2,] 2 3
[3,] 3 4
> y <- DT(a=1:3, c=c('a','b','c'), key='a')
> y
     a c
[1,] 1 a
[2,] 2 b
[3,] 3 c
> x[y]
     a b
[1,] 1 2
[2,] 2 3
[3,] 3 4
> merge(x,y)
  a b c
1 1 2 a
2 2 3 b …
Run Code Online (Sandbox Code Playgroud)

merge r data.table

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

在`has_many``到`关联上使用`find_or_create_by`时出错

我同时使用运行在一个问题find_or_create_by上的has_many through关联.

class Permission < ActiveRecord::Base
  belongs_to :user
  belongs_to :role
end

class Role < ActiveRecord::Base
  # DB columns: user_id, role_id

  has_many :permissions
  has_many :users, :through => :permissions
end

class User
  has_many :permissions
  has_many :roles, :through => :permissions
end
Run Code Online (Sandbox Code Playgroud)

当调用的Rails引发错误find_or_create_byroles一个关联User对象.

u = User.first
u.roles.find_or_create_by_rolename("admin")

# Rails throws the following error
# NoMethodError: undefined method `user_id=' for #<Role id: nil, rolename: nil, 
#  created_at: nil, updated_at: nil>
Run Code Online (Sandbox Code Playgroud)

我能够通过更改我的代码来解决此问题,如下所示:

unless u.roles.exists?(:rolename => "admin") …
Run Code Online (Sandbox Code Playgroud)

activerecord ruby-on-rails has-many

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

使用指针交换对象

我正在尝试交换对象以解决使用void指针交换对象的作业问题.我的功能声明必须是:

void swap(void *a, void *b, size_t size);
Run Code Online (Sandbox Code Playgroud)

我不是在寻找确切的代码如何做到这一点我可以自己解决,但我不确定我是否理解正确.我发现有一个问题是:

void *temp;
temp = a;
a = b;
b = temp;
Run Code Online (Sandbox Code Playgroud)

只更改指针指向的内容.那是对的吗?如果它是正确的,为什么交换指针实际上不会改变*a和*b之间的内容.因为如果你的指针指向不同的东西,你不能取消引用它,现在对象会有所不同吗?

同样,只需切换如下值:

void *temp;
*temp = *a;
*a = *b;
*b = *temp;
Run Code Online (Sandbox Code Playgroud)

也不正确,我不知道为什么.因为在我看来,内容是切换的.

交换对象是否意味着完全交换内存和指针指向的值?

因此我似乎必须使用malloc为我的交换分配足够的空间.如果我为一个对象分配足够的内存,假设它们的大小相同,我真的不知道它与上面的其他两种方法有什么不同.

void *temp = malloc(sizeof(pa));
// check for null pointer
temp = a;
// do something I'm not sure of since I don't quite get how allocating space is any 
// different than the two above methods???
Run Code Online (Sandbox Code Playgroud)

谢谢!

c pointers

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

使用vbscript将中文字符写入文本文件

我正在尝试使用以下方法将一些汉字写入文本文件

Set myFSO = CreateObject("Scripting.FileSystemObject")
Set outputFile = myFSO.OpenTextFile(getOutputName(Argument, getMsiFileName(Wscript.Arguments)), forWriting, True)
outputFile.WriteLine(s) 
Run Code Online (Sandbox Code Playgroud)

该变量s包含一个我从其他文件中读取的汉字。我回显s值,并且可以在屏幕上正确看到。但是,由于某种原因,脚本在停止后outputFile.WriteLine(s)不会返回任何错误消息而停止运行。

我想念什么吗?

string vbscript cjk text-files

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

Android数据库备份

我正在寻找在Android手机上备份我的应用数据库的方法.我知道SQLite数据库只是文件,所以我希望能够将文件复制到SD卡(如果有的话).

但是,我不确定如何为备份/恢复准备数据库/活动.

启动时,我的主要活动从数据库中的一个表中读取条目并将其显示在a中ListView.如API的"Notes"示例所示,我有一个游标自动通知该表的更改(ListView当我在表中添加/删除/更新记录时会自动更新).

所以:当我将数据库文件复制到SD卡时,我不应该有问题.但是如果用户想要恢复数据库文件呢?我不能只将文件复制回数据文件夹,我可以(编辑:...当视图显示来自数据库的数据,因此可能保持打开连接)?

实施备份/恢复时,什么是"最佳实践"?我考虑过的一种方法是:

  1. 打开一个特殊的"还原"活动,该活动不包含打开的数据库连接
  2. 调用finish()主活动以删除它并关闭数据库连接
  3. 复制数据库文件
  4. 打开主要活动的新"实例"
  5. 要求finish()"恢复"活动

这会是要走的路吗?谢谢你的建议!

database backup android

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

在页面重新加载后在复选框列表中移动复选标记 - 仅限Firefox

每当我在列表(ol,ul,dl)中放入复选框,然后在列表上方动态插入按钮时,我就会在Firefox中遇到一些奇怪的行为.如果我从一个像这样的简单列表开始:

<dl class="c">
    <dt><label for="a1"><input type="checkbox" id="a1" />one</label></dt>
    <dt><label for="a2"><input type="checkbox" id="a2" />two</label></dt>
    <dt><label for="a3"><input type="checkbox" id="a3" />three</label></dt>
</dl>
Run Code Online (Sandbox Code Playgroud)

并添加一些像这样的jQuery:

$(document).ready(function(){
    var a = $('<button type="button">a</button>');
    var b = $('<button type="button">b</button>');
    $('<div/>').append(a).append(b).insertBefore($('.c'));
});
Run Code Online (Sandbox Code Playgroud)

...然后在Firefox中打开它,它起初看起来很好.但是检查第一个复选框,重新加载页面,复选标记跳转到第二个框.再次重新加载,它跳到第三个.再次重新加载,并且不会选中任何复选框.

如果我通过删除其中一个追加呼叫而忽略其中一个按钮,那就没问题了.如果我将按钮更改为div或类似的东西,那很好.如果我用div替换dl标签(并摆脱dt标签),那很好.但我需要两个按钮,并且复选框必须在我正在尝试构建的列表中.

有人知道是什么原因引起的吗?

html checkbox firefox jquery

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

如何将.NET控件序列化为CODE?

我想在运行时创建一个.NET表单,添加按钮和其他控件(也在运行时),然后能够从该表单生成something.designer.cs文件(然后可以将其添加到C#解决方案中)并编译).

我想做的与WinForm设计师的做法非常相似.但是我没有为用户提供拖放界面,而是希望在运行时自动动态构建表单/控件.

我以为我可以重用WinForm设计师正在做的事情.

那可能吗?

.net c# visual-studio winforms

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

Win32:如何在窗外画画?

看一下Windows tooltips类提示窗口,我看到它在提示窗口的实际矩形之外绘制了它的阴影.

使用SpyXX - 我可以获得工具提示的窗口rect和类样式:

Rectangle:     (440, 229)-(544, 249), 104x20
Restored Rect: (440, 229)-(544, 249), 104x20
Client Rect:   (0, 0)-(104, 20), 104x20
Run Code Online (Sandbox Code Playgroud)

您会注意到,您看到的投影实际上位于正在绘制的窗口之外.我怎么能画外一个影子在我的窗口,而被外界我的窗口?

注意:阴影不是使用标准CS_DROPSHADOW类样式绘制的.我已通过实验证实了这一点,并且还可以在SpyXX中看到窗口的类样式; 它不使用CS_DROPSHADOW:

Windows Styles:     94000001

    WS_POPUP        80000000
    WS_VISIBLE      10000000
    WS_CLIPSIBLINGS  4000000
    TTS_ALWAYSTIP          1

Extended Styles:    00080088

    WS_EX_LAYERED      80000
    WS_EX_TOOLWIN         80
    WS_EX_TOPMOST          8
Run Code Online (Sandbox Code Playgroud)

那我怎么能在窗外画画?

注意:尝试在桌面上绘制DC已经完成.来自Greg Schechter的重定向GDI,DirectX和WPF应用程序:

从屏幕上绘图和阅读 - Baaaad!

最后,由于我们处于重定向主题,一个特别危险的做法是写入屏幕,通过使用GetDC(NULL)并写入,或尝试执行XOR橡皮带线等.有两个写入屏幕的重要原因很糟糕:

它很昂贵...写入屏幕本身并不昂贵,但它几乎总是伴随着从屏幕读取,因为在写入屏幕时,通常会执行读取 - 修改 - 写入操作,如XOR.从视频内存表面读取非常昂贵,需要与DWM同步,并停止整个GPU管道以及DWM应用程序管道.
这是不可预测的......如果你以某种方式设法到达实际的主要部分并写入它,那么你写入主数据库的内容将保留在屏幕上的时间就不可预测.由于UCE不知道它,它可能在下一帧刷新中被清除,或者它可能持续很长时间,这取决于屏幕上需要更新的其他内容.(我们实际上不允许直接写入主数据库,因为这个原因......例如,如果您尝试访问DirectDraw主数据库,DWM将关闭,直到访问应用程序退出)

winapi layered-windows ws-ex-layered dropshadow

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

#if 0作为定义

我需要一种方法来定义一个FLAGS_IF宏(或等价物)

FLAGS_IF(expression)
<block_of_code>
FLAGS_ENDIF
Run Code Online (Sandbox Code Playgroud)

在调试中编译时(例如,使用特定的编译器开关)编译为

if (MyFunction(expression))
{
    <block_of_code>
}
Run Code Online (Sandbox Code Playgroud)

而在发布中不会产生任何指令,就像它是这样的

#if 0
    <block_of_code>
#endif
Run Code Online (Sandbox Code Playgroud)

在我对C/C++预处理器问题的无知中,我无法想到这样做的任何天真的方式(因为#define FLAGS_IF(x) #if 0甚至没有编译),你能帮忙吗?

我需要一个解决方案:

  • 如果*/内部存在,不会搞砸<block_of_code>
  • 即使在任何深度的内联函数内也一定会在发布中生成0条指令(我想这不包括在内if (false){<block_of_code>}吗?)
  • 如果可能,是否符合标准

macros c-preprocessor

12
推荐指数
3
解决办法
3865
查看次数