有没有办法在objective-c中转换对象,就像在VB.NET中转换对象的方式一样?
例如,我正在尝试执行以下操作:
// create the view controller for the selected item
FieldEditViewController *myEditController;
switch (selectedItemTypeID) {
case 3:
myEditController = [[SelectionListViewController alloc] init];
myEditController.list = listOfItems;
break;
case 4:
// set myEditController to a diff view controller
break;
}
// load the view
[self.navigationController pushViewController:myEditController animated:YES];
[myEditController release];
Run Code Online (Sandbox Code Playgroud)
但是我收到编译器错误,因为'list'属性存在于SelectionListViewController类中,但不存在于FieldEditViewController上,即使SelectionListViewController继承自FieldEditViewController.
这是有道理的,但有没有办法将myEditController转换为SelectionListViewController,以便我可以访问'list'属性?
例如在VB.NET中,我会这样做:
CType(myEditController, SelectionListViewController).list = listOfItems
Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助!
有没有办法在objective-c中对字符串(NSString)进行HTML编码,这与.NET中的Server.HtmlEncode一致?
谢谢!
我目前在iTunes应用商店中有一个iPhone应用程序,它使用SQLite数据库作为数据存储.用户可以将应用程序与Web服务同步,然后将返回的数据存储在SQLite数据库中.用户还可以将新项目插入数据库,并将其更改同步回Web服务.
当连接打开到应用程序的本地数据库时,代码检查以确认数据库文件是否存在于"Documents"文件夹中,如果数据库文件不是通过从"Resources"文件夹复制到"Documents"文件而创建的.夹.
我必须发布应用程序的更新.此更新包含数据库架构更改(新表,列等).根据我的阅读,"Documents"目录中的文件将保留在应用程序更新中,这意味着更新后现有数据库仍将完好无损.
我的问题是,如何用我更新的数据库替换现有数据库,有没有办法在不丢失现有数据库中的数据的情况下这样做?是否存在某种"更新后首次运行"事件,我可以使用它来执行数据库更新,或者我是否必须对现有数据库进行某种检查(查找新列或表)以及检查是否失败手动更换/更新数据库?
谢谢!
我们有一台运行Windows Server 2003的服务器用于我们的生产Web服务器.我们的网站有不同的模块,每个模块都在自己的应用程序池中运行.这使缓存成为一个问题,因为每个模块都有自己的缓存,并且通常多个模块缓存相同的项目.问题是当缓存中的项目在一个模块中被更改时,另一个缓存相同项目的模块不能轻易刷新.
我们的站点是用ASP.NET 4.0编写的,我们使用标准的HttpRuntime.Cache对象作为简单的键/值存储来缓存数据集,业务对象,集合,列表等.我们不使用任何文件依赖项,但我们确实使用了时间到期.我们一次只有大约400个用户,所以我们没有做太疯狂的事情.
听起来某种共享/分布式缓存有助于解决这个问题,但我不确定使用哪一个或者是否更好地推出自己的,因为我们不需要大多数产品中提供的许多功能我见过.我已经看过一些使用WCF的例子,但大多数人建议不要在生产中使用他们的例子,我对WCF知之甚少.
我正在寻找一种简单,快速,轻便,安全的生产方式,如果可能的话,最好是免费的但不一定是免费的.它需要在Windows Server 2003上运行并与ASP.NET 4.0一起使用.
有什么建议或信息吗?
我刚刚开始使用ASP.NET MVC 3,我试图在创建/编辑视图上为ViewModel上的字符串属性渲染以下HTML.
<input id="PatientID" name="PatientID" placeholder="Patient ID" type="text" value="" maxlength="30" />
Run Code Online (Sandbox Code Playgroud)
每个值绑定到ViewModel上的属性,id和name是属性名称,占位符是Display属性,value是属性的值,maxlength是StringLength属性.
我没有用我的每个字符串属性键入上面的HTML和正确的值,而是认为我会尝试使用SingleLineTextBox的名称创建一个EditorTemplate,并在我的字符串属性上使用UIHint,或者在调用EditFor时传递视图的名称.到目前为止一直很好,除了我无法弄清楚如何从StringLength属性中获取maxlength值.
这是我到目前为止的代码:
<input id="@ViewData.ModelMetadata.PropertyName" name="@ViewData.ModelMetadata.PropertyName" placeholder="@ViewData.ModelMetadata.DisplayName" type="text" value="@ViewData.Model" maxlength="??" />
Run Code Online (Sandbox Code Playgroud)
如您所见,不确定如何设置maxlength值.谁知道怎么样?
另外,我是最好的方式吗?正如我之前所说,我可以自己为页面上的每个属性写出纯HTML.我看用TextBoxFor它没有设置最大长度,并加入一些验证标记的HTML输出,因为我不想StringLength属性.我看到的另一个选项是HTML类的扩展/帮助.
在Postgres 9.5中使用xpath时,有没有办法将返回的XML数组转换为INT数组?它似乎让我在使用之前将它分配给INT数组,但我无法弄清楚如何直接在where子句中使用它.以下是我目前如何使用它的示例.
CREATE OR REPLACE FUNCTION people_get_by_ids(_xml XML)
RETURNS SETOF people AS
$$
DECLARE
_ids INT[] = (xpath('/ITEMS/ITEM/VALUE/text()', _xml));
BEGIN
RETURN QUERY
SELECT *
FROM people
WHERE id = ANY(_ids);
END
$$ LANGUAGE plpgsql STABLE;
Run Code Online (Sandbox Code Playgroud)
我会这样称呼它
SELECT * FROM people_get_by_ids('<ITEMS><ITEM><VALUE>488</VALUE></ITEM><ITEM><VALUE>489</VALUE></ITEM></ITEMS>');
Run Code Online (Sandbox Code Playgroud)
如果有一种简单而高效的方法可以不使用_ids变量并将xpath部分放在where子句中,那就太好了.
我需要在几个地方执行此操作,并计划创建一个函数来包装该(xpath('/ITEMS/ITEM/VALUE/text()', _xml))部分.
有没有办法在 Sqlite 中将日期转换为字符串?例如,我试图获取 Sqlite 中的最短日期:
SELECT MIN(StartDate) AS MinDate FROM TableName
Run Code Online (Sandbox Code Playgroud)
我知道在 SQL Server 中我会使用下面的 SQL 来完成我想要做的事情:
SELECT CONVERT(VARCHAR(10), MIN(StartDate), 101) AS MinDate FROM TableName
Run Code Online (Sandbox Code Playgroud)
谢谢!