ios开发

iOS开发——异常:[__NSCFNumber length]: unrecognized selector sent to instance

白昼怎懂夜的黑 提交于 2020-02-20 15:42:48
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFNumber length]: unrecognized selector sent to instance 网上参考的他人案例,与我的情况一模一样,所以直接盗用他的图和文章了。 http://www.tuicool.com/articles/EZ3uMb7 这个错误是作者解析pilst文件中的字段的 comments数据类型为NSNumber类型,而在字典转模型时写成了NSString类型,所以报了以上错误; 解决方法: 将模型属性中的comments改为NSNumber类型,掉用的时候做一下数据转换 设置属性类型为NSNumber 调用时做下数据类型转换,转成NSString即可 来源: https://www.cnblogs.com/zeyang/p/4457930.html

关于极光推送遇到的小问题整理

喜欢而已 提交于 2020-02-20 14:18:32
1.ios端收不到消息 极光推送分开发环境和生产环境,注意这里的开发和生产和我们自己的开发,测试,生产环境不一致。我们的开发测试生产可能用的都是极光的生产环境; 前后端一定要对清楚,不然会费很多时间定位问题: 这里的apnsProduction 设置为true 为生产环境 payload = PushPayload.newBuilder() .setPlatform(Platform.android()) .setAudience(Audience.alias(accounts)) .setNotification(Notification.newBuilder() .addPlatformNotification(AndroidNotification.newBuilder() .setAlert(alert) .setStyle(1) .setBigText(alert) .setTitle(notificationTitle) .build()) .build() ) .setMessage(cn.jpush.api.push.model.Message.newBuilder() .setMsgContent(content) .setTitle(contentTitle) .addExtras(message.getBusinessContent()) .build())

IOS开发,添加控件(xcode9.1 Object-c)

你说的曾经没有我的故事 提交于 2020-02-19 04:09:07
添加文本与编辑框: UILabel * label = [ [ UILabel alloc ] initWithFrame : CGRectMake ( 20 , 20 , 200 , 40 ) ] ; label . backgroundColor = [ UIColor blueColor ] ; label . textColor = [ UIColor blackColor ] ; label . text = @ "Mylabel" ; [ label setFont : [ UIFont boldSystemFontOfSize : 14 ] ] ; [ self . view addSubview : label ] ; UITextField * textField = [ [ UITextField alloc ] initWithFrame : CGRectMake ( 20 , 70 , 260 , 30 ) ] ; textField . borderStyle = UITextBorderStyleRoundedRect ; textField . contentVerticalAlignment = UIControlContentVerticalAlignmentCenter ; [ textField setFont : [ UIFont

iOS开发workspace和多个target

余生长醉 提交于 2020-02-18 13:45:58
一、workspace的作用: 1、一个项目复用代码:可以关联多个工程文件,便于复用代码,提高开发效率。 2、开发多个项目:同时开发多个项目的时候可以使用workspace,把这几个项目关联起来。 3、模块化:开发SDK时用workspace,可以将各个功能不同的库文件(.a or framework)模块化,分开管理。 二、workspace的使用: 1、创建workspace: 先创建一个工作文件夹,然后在Xcode的File —> New —> workspace。 2、创建工程: 创建多个工程(.xcodeproj)文件,可以是多个项目。也可以是一个项目多个.a静态库。 3、将workspace和工程文件关联起来: xcode7可以add,xcode6之前都是拖进来。 三、配置:(这个是重点) 怎么设置参考下面的文献。 1、对于编译有静态库的xcworkspace 可以设置静态库和主工程文件的先后的编译顺序。 2、设置主工程的头文件搜索路径:header search path : $(BUILT_PRODUCTS_DIR)/include/静态库的名字. 3、注意点:   3.1、静态库的编译一定要编译真机的,要不一直都是红色的,不能用。只有编译了真机的才能变成灰色。   3.2、静态库中使用了分类文件 一定要在 other link flag 添加 -ObjC   3

iOS 开发之照片框架详解(1)

心不动则不痛 提交于 2020-02-17 19:41:49
http://kayosite.com/ios-development-and-detail-of-photo-framework.html/comment-page-1 一. 概要 在 iOS 设备中,照片和视频是相当重要的一部分。最近刚好在制作一个自定义的 iOS 图片选择器,顺便整理一下 iOS 中对照片框架的使用方法。在 iOS 8 出现之前,开发者只能使用 AssetsLibrary 框架来访问设备的照片库,这是一个有点跟不上 iOS 应用发展步伐以及代码设计原则但确实强大的框架,考虑到 iOS7 仍占有不少的渗透率,因此 AssetsLibrary 也是本文重点介绍的部分。而在 iOS8 出现之后,苹果提供了一个名为 PhotoKit 的框架,一个可以让应用更好地与设备照片库对接的框架,文末也会介绍一下这个框架。 另外值得强调的是,在 iOS 中,照片库并不只是照片的集合,同时也包含了视频。在 AssetsLibrary 中两者都有相同类型的对象去描述,只是类型不同而已。文中为了方便,大部分时候会使用「资源」代表 iOS 中的「照片和视频」。 二. AssetsLibrary 组成介绍 AssetsLibrary 的组成比较符合照片库本身的组成,照片库中的完整照片库对象、相册、相片都能在 AssetsLibrary 中找到一一对应的组成,这使到

ios开发中如何使用sqlite数据库

℡╲_俬逩灬. 提交于 2020-02-15 16:55:36
首先,使用sqlite存储数据,需要添加libsqlite3.dylib 这个动态库,然后 添加动态库的主头文件 #import <sqlite3.h> // db就是数据库的象征,如果要进行CRUD(增删改查),得操作db这个实例 @property (nonatomic, assign) sqlite3 *db; 第一步: 打开数据库。 当系统第一次用到数据库时, 我们先创建一个数据库文件,并创建表,就在这一步。 // 获得数据库文件的路径,即沙盒 NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; NSString *filename = [doc stringByAppendingPathComponent:@"students.sqlite"]; // 将OC字符串 转成 C语言字符串 const char *cfilename = filename.UTF8String; // 1.打开数据库(如果数据库文件不存在,sqlite3_open函数会自动创建数据库文件) int result = sqlite3_open(cfilename, &_db); // 这个open方法 就是打开数据库

iOS 开发 UItableView中滑动删除 cell

孤街醉人 提交于 2020-02-14 05:39:55
主要是就是两个函数 一: - ( void ) tableView: ( UITableView * ) tableView commitEditingStyle: ( UITableViewCellEditingStyle ) editingStyle forRowAtIndexPath: ( NSIndexPath * ) indexPath 相应 editingStyle事件处理 在这里主要相应 UITableViewCellEditingStyleDelete: 二: (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath 在这个函数中设置那个cell设置成 什么样的editingStyle删除,插入,无 UITableViewCellEditingStyleDelete UITableViewCellEditingStyleInsert UITableViewCellEditingStyleNone 需要注意的问题 :在删除对应cell中的内容时,也要删除这个cell,否则运行时显示效果就像没有刷新 一样,多出一个cell。而使用 [tableView reloadData];[self

iOS开发~CocoaPods使用详细说明

给你一囗甜甜゛ 提交于 2020-02-13 15:32:40
CocoaPods的安装 Ruby环境搭建 a. mac自身带ruby 查看下当前ruby版本:打开终端输入 ruby -v(确实安装了,不过用这个版本接下来工作失败了,所以更新下ruby) ritekiMac-mini:PodTest lucky$ ruby -v ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0] ritekiMac-mini:PodTest lucky$ b. 更新ruby 终端输入如下命令(把Ruby镜像指向taobao,避免被墙,你懂得) gem sources --remove https://rubygems.org/ gem sources -a http://ruby.taobao.org/ gem sources -l (用来检查使用替换镜像位置成功) ritekiMac-mini:~ lucky$ gem sources --remove https://rubygems.org/ https://rubygems.org/ removed from sources ritekiMac-mini:~ lucky$ gem sources -a http://ruby.taobao.org/ http://ruby.taobao.org/ added to sources

iOS开发中如何创建多个target

徘徊边缘 提交于 2020-02-13 00:20:45
在开发 iOS 应用程序的过程中,经常需要根据不同的需求,切换到不同的项目配置,或者打不同的包(测试环境、开发环境、生产环境等等),如果每次都是手动配置,一则比较麻烦,二则容易配置错,那么有没有更好的方案来解决这个问题呢?答案是:有的。我们可以根据不同的需求,创建不同的 target ,在不同需求要切换配置或打包时,直接选择对应的 target 完成工作,从而提高我们的开发效率。 创建多个 target 有两种方式,一种是创建多个 info.plist 的配置文件,另一种是拷贝整个工程所需的文件,如:源文件、资源文件、配置文件等等。下面介绍这两种方式的创建过程: 方式一 复制target 首先复制 target ,然后在弹出的框中,选择 Duplicate Only ,即可复制一个 target 修改名字 1.修改target的名字 双击复制出来的 target 即可修改名字 2.修改plist名字 把复制出来的 *** copy-Info.plist 文件改成其它名字,然后在 General 的配置里面,重新选择 target 的配置文件 3.修改scheme的名字 选择 Manage Schemes... ,然后在目标 scheme 上门双击(具体是:单击一下,等3s再单击,如果快速双击,是无法进行名字的修改的),之后修改名字 经过上面的修改,一个新的 target 就创建完成

ios tableView删除行

家住魔仙堡 提交于 2020-02-12 04:14:30
  iOS6之前,tableview是显示数据等功能的主要控件。在开发中比如购物车功能的删除行是很重要的功能,下面开始介绍      之前在网上看demo,都是一个section的例子,并不符合我开发的需求,这里我根据前辈的demo写了新版本,可以进行多行删除操作        这里我直接贴上demo代码。我这里写的假数据是把两个array放到一个大的array中,这样比较符合实际情况,因为开发中一般不可能只对一个section进行操作或者每个section都为其创建一个单独的array来操作。   我这里用大的arr来控制分区数,然后根据小arr的数量,来显示行数。   以上代码的效果是两个分区,都可以进行删除操作 来源: https://www.cnblogs.com/mdurant/p/5162644.html