问题列表 - 第44386页

UIWebView是否可以保存并自动填充以前输入的表单值(例如,用户名和密码)?

我正在构建一个iPhone应用程序,它只是一个UIWebView具有基于表单的登录的现有移动网站.当我在iPhone Safari上登录移动网站时,系统会提示我保存用户名/密码,然后当我稍后返回该网站时自动填充.

我想启用相同的功能UIWebView,但对于我的生活,我无法弄清楚如何做到这一点.有任何想法吗?


按照Michael的基本模型(参见接受的答案),我能够完成这项工作.这是我做的:

设置数据

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType; {

    //save form data
    if(navigationType == UIWebViewNavigationTypeFormSubmitted) {

        //grab the data from the page
        NSString *username = [self.webView stringByEvaluatingJavaScriptFromString: @"document.myForm.username.value"];
        NSString *password = [self.webView stringByEvaluatingJavaScriptFromString: @"document.myForm.password.value"];

        //store values locally
        [[NSUserDefaults standardUserDefaults] setObject:username forKey:@"username"];
        [SFHFKeychainUtils storeUsername:username andPassword:password forServiceName:@"MyService" updateExisting:YES error:nil];

    }    

}
Run Code Online (Sandbox Code Playgroud)

获取数据

- (void)webViewDidFinishLoad:(UIWebView *)webView{

    //verify view is on the login page of the site (simplified)
    NSURL *requestURL = [self.webView.request URL];
    if ([requestURL.host isEqualToString:@"www.mydomain.com"]) …
Run Code Online (Sandbox Code Playgroud)

forms iphone autofill uiwebview

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

我应该从服务层或几乎任何方法返回什么

仍然可以得到我的一件事是从方法中返回什么?我知道你应该尽可能具体(即如果你需要返回一个int,不要返回对象)

不过就是这样的情况

我有一个包含业务逻辑的服务层.假设我有一个名为CreateAnEvent()的方法

基本上它将事件保存到数据库,如果成功,它将返回一个"保存到数据库"的字符串

现在,如果我首先需要检查此事件是否符合某些业务规则,会发生什么.

  1. 不能低于今天的日期.
  2. 从今天开始不能超过一周.
  3. 无法在星期五创建.

像我需要首先做一些业务检查,可能导致验证错误或可能是某种其他错误(甚至可能是异常)或成功消息仍然得到我应该返回的东西.

所以我们首先进行验证.假设用户现在失败了所有这些验证规则?我返回一个字符串,所以这将不会很好我将不得不使用csv返回所有错误并解析出来.

所以这看起来非常糟糕.

我可以先使用一个名为Validate()的单独方法,但现在我必须记得在调用CreateAnEvent()之前调用它.所以我认为这不是那么好.

我在我的mvc项目中使用ViewModel所以也许我应该将整个viewModel传递给服务层然后返回此ViewModel.

在这个视图模型中,我可以有一组错误,我可以将所有这些错误添加到一个字符串中以包含成功消息.

一旦它返回,如果count为零,则首先检查错误,然后假设成功填充msg.

我没有返回最具体的类型,但它可以解决我的问题.但是,我不认为服务层应该知道有关viewModel的任何信息.

我知道有些人在viewmodel中进行验证,但我认为更多的是基本的非业务逻辑规则,比如是否为字段空白.我认为我不应该像在视图模型中描述的那样进行测试.

所以我能想到的最后一个选项是发送域模型(因为我很有可能在视图中使用它,所以它将在viewmModel中),并且在这个域模型中我会为成功消息添加一个字符串错误的集合.

然后我会返回这个域模型.

所以它与使用ViewModel基本相同,但这次提取出域模型并使用它.

那么这是最好的方式还是有更好的方法?

c# asp.net-mvc

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

查找列表中第一个出现的特定数字的位置 [python]

所以我想找到一个在列表中出现不止一次的数字。我想要第一个的位置。

示例:说我想要 3

     s = [1,2,3,4,5,3,9,8]  => s[2] appears first
Run Code Online (Sandbox Code Playgroud)

python position list duplicates

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

在sharekit中获取facebook和twitter的用户ID

我使用sharekit为iPhone应用程序实现facebook和twitter.我们如何获取登录用户的用户ID,以便我可以将其发送到服务器.任何帮助将不胜感激.谢谢.

iphone xcode objective-c fbconnect sharekit

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

从FPU堆栈中删除内容的最简单方法

最近我在使用FPU堆栈溢出时遇到了一些麻烦.我设法将它追溯到一个错误的库函数,每次调用它时都会将垃圾值推送到FPU堆栈,并且永远不会清理它.

幸运的是,这很容易重现,我确切地知道它导致了什么条件.我可以将一行内联ASM放入调用此例程的例程中,将最高值从FPU堆栈中弹回...除了我不太清楚要写什么.我的ASM-fu对于middlin来说是公平的,但不是那么强大.

那么在x86汇编中摆脱FPU堆栈顶部值的最简单方法是什么,假设它是垃圾数据并且我不关心它的值?

x86 assembly x87

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

iOS"当前图形上下文" - 那是什么

当我绘制线条和形状等时,我会在iOS中获得"当前图形上下文".

究竟什么是"当前图形上下文" - 我正在寻找30,000英尺的描述.

现在我只是复制并粘贴UI代码,不完全确定它在做什么.

iphone ios

16
推荐指数
2
解决办法
9007
查看次数

asp.net mvc vs javascript构建整个站点

我正在建立一个网站.我有两种选择.

  1. asp.net mvc 3.0 + ajax.
  2. 使用ajax(javascript)构建整个站点.首先,使用ajax以json格式获取数据,然后用数据填充整个页面.这样,页面将只通过javascript生成.

谁能告诉我这两种方式的优缺点?

提前致谢.

javascript ajax asp.net-mvc

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

年龄选择没有数组的选择框?

有没有办法创建这样的年龄选择列表:

<?php
$Array = array('99','98','97','96');
?>
<select name="age">
<option value="" selected>Choose</option>
<?php foreach($Array as $value){ echo('<option value="' . $value . '">' . $value . '</option>');}?>
</select>
Run Code Online (Sandbox Code Playgroud)

但是没有一个非常长的阵列,因为我希望年龄范围从18到100,这需要永远写出来吗?

php arrays

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

更改Java字符串中的日期格式

String代表一个约会.

String date_s = "2011-01-18 00:00:00.0";
Run Code Online (Sandbox Code Playgroud)

我想将它转换为a Date并以YYYY-MM-DD格式输出.

2011-01-18

我怎样才能做到这一点?


好的,根据我在下面找到的答案,这是我尝试过的东西:

String date_s = " 2011-01-18 00:00:00.0"; 
SimpleDateFormat dt = new SimpleDateFormat("yyyyy-mm-dd hh:mm:ss"); 
Date date = dt.parse(date_s); 
SimpleDateFormat dt1 = new SimpleDateFormat("yyyyy-mm-dd");
System.out.println(dt1.format(date));
Run Code Online (Sandbox Code Playgroud)

但它输出02011-00-1而不是所需2011-01-18.我究竟做错了什么?

java string formatting date date-format

453
推荐指数
14
解决办法
128万
查看次数

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