解释我的情况的最好例子是使用博客文章.假设我有一个UITableView,它载有我从API获得的博客帖子的标题.当我点击一行时,我想显示详细的博文.
这样做时,API会传回几个字段,包括"post body"(HTML文本).我的问题是,我应该使用什么来显示它,以便它显示为格式化的HTML?我应该使用UIWebView吗?我不确定你是否在浏览网页时使用UIWebView(比如用URL或其他东西初始化它),或者你可以将它交给HTML字符串,它会正确地格式化它.
此页面上还会显示其他几个字段,例如标题,类别,作者等.我只是使用UILabel,所以没有问题.但我不知道如何处理HTML块.我正在以编程方式完成所有这些工作.顺便说一句.
如果你不能说,我对iOS开发相对较新,只有2-3周左右,没有obj-c背景.因此,如果UIWebView是正确的方法,我也会感激任何"陷阱!" 注意,如果有的话.
我有一个Rails应用程序(不相关,我知道),我想针对Rails应用程序验证iOS应用程序,并保持身份验证,以便将来对Rails API的请求工作,而无需重新验证每个请求.从概念上讲,这就是我想要做的......但我不确定这是否是最佳方法.
好吧,所以在我的Rails应用程序中,每个用户都有一个唯一的令牌(SHA1哈希).我在想第一次加载iPhone应用程序时,用户会看到用户名/密码屏幕.他们输入了Rails应用程序的凭据,并且在成功进行身份验证后,Rails应用程序将返回其唯一的用户令牌,然后可以将其存储在钥匙串中?从那以后,我想我可以简单地将用户令牌附加到所有API请求,这就是我如何在Rails应用程序中验证用户.这也可以保持用户名/密码独立于iPhone应用程序(因此用户可以在Rails应用程序中更改其用户名/密码,但iPhone应用程序不会关心它,因为它将使用他们的令牌,这不会改变).
我以为我的URL请求看起来像这样:
http://example.com/api/v1/[whatever].json?token=XXXXXXXXXXXXXXX
Run Code Online (Sandbox Code Playgroud)
这听起来像是一种合理的方法吗?或者他们的担忧我不知道这种方法?我一直在做Rails工作很长一段时间,但我对iOS比较陌生(我只有1个应用程序,它不需要任何身份验证).
如果这是一个很好的方法,是否难以使用钥匙串?我想我读过模拟器和设备本身不支持用于钥匙串访问的相同API?(或者模拟器可能不支持模拟钥匙串访问)
提前致谢.我尝试搜索较旧的帖子,但似乎没有人回答我的具体情况.
我的应用程序有3个标签栏项,每个项都映射到一个单独的视图控制器.我的问题是第一个控制器是一个UINavigation控制器,它深入钻取约3个级别.我对导航没有任何问题,但是当我点击不同的标签栏项目然后当我返回第一个标签栏项目(带有UINav控制器的项目)时,我宁愿重置为导航序列中的第一个控制器.
我读过你必须做的事情:
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
{
[[self navigationController] popViewControllerAnimated:NO];
}
Run Code Online (Sandbox Code Playgroud)
但我不确定我应该把这个方法放在哪里.谁是标签栏控制器的代表?它在AppDelegate中设置......它应该进去吗?
谢谢.
我在点击UITableView中的一行时加载了一篇文章的详细视图.单击时,它会使用数据加载对象,然后将该对象传递给正在堆栈上推送的下一个控制器.但是,当我这样做时:
- (void)showArticle
{
[aTitle setText:[[self article] title]];
[aTitle setBackgroundColor:[UIColor clearColor]];
[[self view] addSubview:aTitle];
[aCategory setText:[[self article] category]];
[aCategory setBackgroundColor:[UIColor clearColor]];
[[self view] addSubview:aCategory];
[aAuthors setText:[[self article] authors]];
[aAuthors setBackgroundColor:[UIColor clearColor]];
[[self view] addSubview:aAuthors];
}
Run Code Online (Sandbox Code Playgroud)
在title显示了罚款,但category并authors没有显示出来.当我调试时,当我查看类别/作者的值时,我会"超出范围".该article对象正在@synthesized并且我已经检查了它并且它具有正确的数据.
有任何想法吗?这是否意味着方法是私有的还是什么?
谢谢!
我正在解析XML文件并填充表视图.XML的格式如下:
<article>
<title>Title 1</title>
<last-modified>MM/DD/YYY</last-modified>
</article>
...
Run Code Online (Sandbox Code Playgroud)
我目前使用它NSMutableString来收集所有文章标题并在- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string方法中附加字符串.然后在适当的时候,我正在添加articleTitle一个NSMutableArray包含所有文章标题,并从数组中填充表格,正如您所期望的那样.
但是,现在我想切换到使用带有字幕的表格视图单元格(我想将最后修改日期作为detailTextLabel标题和标题textLabel).通过将解析分解为多种方法(即2 parser种方法和foundCharacters方法)的方式,我不确定如何"收集"数据,并从该数据中填充表格.
对此最好的方法是什么?我可以以某种方式填充NSDictionary或其他东西,并在构建表格单元格时按键检索项目吗?
我似乎无法找出解决这个问题的最佳方法.
提前致谢!
我正在使用TouchJSON来解析JSON Rails API的输出,但是遇到了困难.总体目标是遍历响应,解析JSON,Round为每个JSON对象创建一个实例,并将这些Round对象粘贴到NSArray中,以便我可以将其加载到UITableView.因此,如果有一种比我即将展示的更直接的方式(目前不工作,顺便说一下),请告诉我.
Rails API返回一个类似于以下内容的集合:
[
{
"round": { "course_title": "Title A", "result": "+8" }
},
{
"round": { "course_title": "Title B", "result": "+4" }
},
...
]
Run Code Online (Sandbox Code Playgroud)
我也在使用ASIHTTPRequest,我可以使用以下方法成功获得响应:
NSString *responseString = [request responseString];
Run Code Online (Sandbox Code Playgroud)
但从那里,我似乎无法到达任何地方.这里或多或少是TouchJSON的建议:
NSString *jsonString = [request responseString]; // [{"round":{...}}, ..., {"round:{...}}]
NSData *jsonData = [jsonString dataUsingEncoding:NSUTF32BigEndianStringEncoding];
NSDictionary *dictionary = [[CJSONDeserializer deserializer] deserializeAsDictionary:jsonData error:nil];
// then I do this...
NSLog(@"JSON: %@", dictionary); // JSON: null
Run Code Online (Sandbox Code Playgroud)
我想从那里我可以循环遍历字典并使用我的Round类创建对象映射.但也许这完全是错误的做法.
我的想法是从Rails返回的JSON是一个JSON对象数组,所以也许这就是为什么JSON解析器不能将它识别为有效的JSON?由此,我有两个问题:
1)TouchJSON是否能够接受我的API返回的JSON对象数组?
2)是否可以将responseString强制转换为NSArray,以便循环遍历每个"round"并以这种方式解析JSON?如果我从响应字符串中删除第一个和最后一个字符(即"["和"]"),JSON解析器将只捕获集合中的第一个"圆".
3)我是否正确地处理了整个过程? …