iPhone开发应用几个案例实现分析是本文要介绍的内容,主要是来学习对iphone开发中几个小案例的实现进行来讲解并分析,具体内容来看本文详解。
1、解析NSString形式xml的代码
提出的问题:
- NSString *xmlString = @"<person><name>Jack</name><age>13< /age></person>";
如何对这个xmlString构造一个NSXML,以及如何解析构造的NSXML.
解决方法:先转换成NSData,然后用NSXMlParser进行解析。代码:
- - (void)handleXMLData {
- NSString *myString = @"<addresses owner='swilson'><person><lastName>Doe</lastName><firstName>John</firstName></person></addresses>";
- NSData *myRequestData = [ NSData dataWithBytes: [myString UTF8String] length:[myString length]];
- NSXMLParser *myParser = [[NSXMLParser alloc] initWithData:myRequestData];
- [myParser setDelegate:self];
- [myParser setShouldProcessNamespaces:YES];
- [myParser setShouldReportNamespacePrefixes:YES];
- [myParser setShouldResolveExternalEntities:NO];
- BOOL success = [myParser parse];
- [myParser release];
2、iphone开发中让用户WebView访问网页时嵌入开发者自己的内容
代码
- NSString *strUrl=[textField text];
- NSString *urlString=[NSString stringWithFormat:strUrl];
- NSURL *url=[NSURL URLWithString:urlString];
- NSURLRequest *urlRequest=[NSURLRequest requestWithURL:url
- cachePolicy:NSURLRequestReturnCacheDataElseLoad
- timeoutInterval:60];
- NSData *urlData;
- NSURLResponse *response;
- NSError *error;
- urlData=[NSURLConnection sendSynchronousRequest:urlRequest returningResponse:&response error:&error];
- NSString *dataStr =[[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding];
- dataStr = [dataStr substringToIndex:[dataStr length] - 16];
- dataStr = [dataStr stringByAppendingString:@"<p>hello world navy did it </p></body></html>"];
- NSLog(@"%@",dataStr);
- const char *cString = [dataStr UTF8String];
- NSData *myData= [[NSData alloc]initWithBytes:cString length:strlen(cString)+1];
- [self.myWebView loadData:myData MIMEType:@"text/html" textEncodingName:@"utf-8" baseURL:url];
这个代码我是在UICatalog中WebViewController中添加的,有人要这功能,小生就乘机学习了下,嫌麻烦,直接用的UICatalog代码.见谅.
此代码功能在于:在你访问的网页左下角加了hello world navy did it.几个字.
不希望做流氓功能.一切以用户为主.
3、iPhone开发中,动态调用类和方法
举一个很简单的例子:
某公司的有1000名员工, 每个员工的工资都不一样. 发工资的时候, 这要是人工去发, 耗费的时间和精力是非常大的. 所以财务会打一个表格给银行, 委托银行转账.
站在银行的角度, 如果有1000个公司, 委托银行转账发工资. 它应该怎么做呢? 它需要通过电子转账系统, 输入公司名字, 每个员工的工资数, 就可以实现自动转账了.
好, 我们回到 iPhone 开发上来:
我们现在面临的情况是, 有10个类, 每个类里头都有n个方法(前提是方法名有规律可循,比如 setA0,setA1…) 如果挨个去init类, 然后挨个调用方法,这样你一天就不用干别的了.
Objective-C里 面,我们可以这样实现:
有数组: classNames, 存着 类的名字
方法名都是 setA 开头
- for (int c=0; c<[classNames count]; c++) {
- NSString *className=[classNames objectAtIndex:c];
- id class=[[NSClassFromString(className) alloc] init];
- for (int i=0; i<[params count]; i++) {
- [class performSelector:NSSelectorFromString([NSString stringWithFormat:@"setA%i",i])];
- }
- }
两个重要的宏 我加大字体标出来了,然后你可以再发挥一下, 比如传参数。
4、iPhone开发项目中加载本地html文件到uiwebview的代码
如果您想在iPhone项目中加载Documents里面的文件,可以尝试CocoaChina版主“lvyile”提供的代码
- - (void)loadDocument:(NSString*)docName {
- NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
- NSString *documentsDirectory = [paths objectAtIndex:0];
- NSString *path = [documentsDirectory stringByAppendingPathComponent:docName];
- NSURL *url = [NSURL fileURLWithPath:path];
- NSURLRequest *request = [NSURLRequest requestWithURL:url];
- self.myWebView.scalesPageToFit = YES;
- [self.myWebView loadRequest:request];
- }
如果加载App内部的文件,需要改一下代码
- NSString
- *mainBundleDirectory = [[NSBundle mainBundle] bundlePath];
- NSString
- *path = [mainBundleDirectory stringByAppendingPathComponent:docName];
小结:iPhone开发应用几个案例实现分析的内容介绍完了,希望通过本文的学习能对你有所帮助!更多关于iphone开发的相关的内容,请参考iphone开发频道的内容。