2016年4月18日星期一

关于iOS开发中info.plist文件的解读



1. Localiztion native development region --- CFBundleDevelopmentRegion 本地化相关,如果用户所在地没有相应的语言资源,则用这个key的value来作为默认.

2. Bundle display name --- CFBundleDisplayName 设置程序安装后显示的名称。应用程序名称限制在10-12个字符,如果超出,将被显示缩写名称。

3. Executaule file -- CFBundleExecutable 程序安装包的名称

4. Icon file --- CFBundleIconFile 应用程序图标名称,一般为icon.png

5. Bundle identifier --- CFBundleIdentifier 这个字段很重要,程序的唯一标识字符串,该字符串的value值习惯命名格式为: com.yourcompany.yourapp,它是每一个应用的身份证书,这个为应用程序在iphone developer program portal web站点上设置的唯一标识符。(就是你安装证书的时候,需要把这里对应修改).

6. InfoDictionary version --- CFBundleInfoDictionaryVersion Info.plist格式的版本信息

7. Bundle OS Type code -- 关键字指定了束的类型,类似于Mac OS 9的文件类型代码。该关键字的值包含一个四个字母长的代码。应用程序的代码是‘APPL’;框架的代码是‘FMWK’;可装载束的代码是‘BND’。如果您需要,您也可以为可装载束选择其他特殊的类型代码。

8. Bundle versions string, short ---指定了束的版本号。一般包含该束的主、次版本号。这个字符串的格式通常是“n.n.n”(n表示某个数字)。第一个数字是束的主要版本号,另两个是次要版本号。该关键字的值会被显示在Cocoa应用程序的关于对话框中。该关键字不同于CFBundleVersion,它指定了一个特殊的创建号。而CFBundleShortVersionString的值描述了一种更加正式的并且不随每一次创建而改变的版本号。

9. Application require iPhone environment -- LSRequiresIPhoneOS:用于指示程序包是否只能运行在iPhone OS 系统上。Xcode自动加入这个键,并将它的值设置为true。一般不需要更改这个值.

10. Launch screen interface file base name:欢迎界面的文件名称

11. Main storyboard file base name:默认情况下程序的主入口

12. Required device capabilities 当提交程序到app store时,3.0及更高版本的应用程序不再直接说明使用哪种设备,而是使用info.plist文件来确定需要哪些设备功能。iTunes通过这个所需功能的列表来确定一个应用程序能否下载到一个指定的设备并在该设备上正常运行。

13. Supported interface orientations:设置程序默认支持的方向

2016年4月6日星期三

2016年2月28日星期日

iOS开发跳到系统设置界面

定位服务

定位服务有很多app都有,如果用户关闭了定位服务.我们要在设置里打开.代码如下

//定位服务设置界面
NSURL *url = [NSURL URLWithString:@"prefs:root=LOCATION_SERVICES"];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
    [[UIApplication sharedApplication] openURL:url];
}

2016年2月22日星期一

Xcode中SVN提交.a文件问题

1. 打开终端,  在命令行中输入: vi ~/.subversion/config  来打开配置文件.
2. 然后, 在[miscellany]项找到这个串:  
# global-ignores = *.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.a *.pyc *.pyo
#   *.rej *~ #*# .#* .*.swp .DS_Store

这里的意思是, SVN在提交时自动忽略以这些后缀的文件, 那么我们要去掉*.a这一项, 则将配置文件改为
global-ignores = *.o *.lo *.la *.al .libs *.so *.so.[0-9]*  *.pyc *.pyo *.rej *~ #*# .#* .*.swp .DS_Store
保存退出. 就可以了. 你可以根据自己的需要修改其他的后缀名.

2015年10月10日星期六

NSXMLParser笔记

使用NSXMLParser需要实例化(alloc)创建解析器 (initWithData/initWithContentsOfURL/initWithStream)
定义解析器委托 (delegate)
开始解析(parser)
当parser初始化并执行parser语句的时候,程序会开始走代理方法

这种解析方式是利用它的代理NSXMLParserDelegate实现的

<NSXMLParserDelegate>

  开始处理xml数据,他会把整个xml遍历一遍,识别元素节点名称elementName;
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(nullable NSString *)namespaceURI qualifiedName:(nullable NSString *)qName attributes:(NSDictionary<NSString *, NSString *> *)attributeDict;


得到文本节点里存储的信息数据         
 - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string;  
        
存储从第二个代理方法中获取到的信息           
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName  
        
 这就是解析的过程,在这个过程中会不停的重复的执行这三个代理方法,直到遍历完成                                   
解析开始执行的方法         
 - (void)parserDidStartDocument:(NSXMLParser *)parser;        
 解析结束执行的方法          
- (void)parserDidEndDocument:(NSXMLParser *)parser;              
当出现解析错误的时候,会执行这个方法    
 - (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError;  

2015年10月8日星期四

AFNetWoring 请求XML数据格式

       公司想要重写3年前的APP,我荣幸的获得了这个锻炼机会,负责数据缓存,网络请求,数据解析的任务.也开始了首次接触XML数据的调研......
      AFNetworing2.0提供了XML数据请求格式,但是请求数据格式是NSXMLParser数据类型,需要自己处理数据.
AFNetworing请求(以get请求为例):
/**
 *
 *  @param urlStr   URL 名称
 *  @param params  数据字典
 *  @param success 请求成功返回值
 *  @param fail    请求失败返回值
 */
- (void)Yu_GET_XMLWithUrl:(NSString *)urlStr Params:(NSDictionary*)params success:(void (^)(id json))success fail:(void (^)(NSError *error))fail;
{
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    //设置请求格式
    [manager setResponseSerializer:[AFXMLParserResponseSerializer new]];
    NSString *url = [NSString stringWithFormat:@"%@",urlStr];
    NSLog(@"param == %@", params);
    [manager GET:url parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
        if (success) {
            success(responseObject);
        }
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        if (fail) {
            fail(error);
        }
        
    }];
}
愉快的可以用了呢!
 [YuNetworking Yu_GET_XMLWithUrl:@"http://iuxlabs.com/iux/xbrand/api/zine-list.php" Params:nil success:^(id json) {
        NSXMLParser *xmlParser = (NSXMLParser *)json;
        [xmlParser setShouldProcessNamespaces:NO];
        [xmlParser setShouldReportNamespacePrefixes:NO];
        [xmlParser setShouldResolveExternalEntities:NO];
        xmlParser.delegate = self;
        bool bRet=[xmlParser parse];
        NSLog(@"%ld json %@",(long)bRet,xmlParser);
    } fail:^(NSError *error){
        //错误
    }];

然后就开始了我下一步的NSXMLPaser的调研工作


2015年9月17日星期四

iOS9应用HTTP请求<个人白痴笔记>

       升级了一下午的Xcode7,果断看看应用有什么bug.网络请求换成HTTPS后需要在info.plist里强制使用HTTP.

                                             

按照上图点击进入下图页面


                                      
在里面粘贴:

    <key>NSAppTransportSecurity</key>
     <dict>
         <key>NSAllowsArbitraryLoads</key>
         <true/>
     </dict>


OVER!!!!!