CODESHIF - Mac mac技巧 2018-12-20T00:31:00+08:00 Typecho https://www.codeshif.com/feed/atom/category/mac/ <![CDATA[如何在NSTableView中的NSComboBoxCell添加值]]> https://www.codeshif.com/archives/23.html 2018-12-20T00:31:00+08:00 2018-12-20T00:31:00+08:00 admin https://www.codeshif.com 注意:在NSTableView中的NSComboBoxCell,每行中的该列是共享的,所以我们只需要对该列数据添加一次数据即可。

第一种做法 Interface-Builder直接刚,


注意 取消勾选 Uses Data Source

第二种做法,使用 Value Selection


注意选择Content Views

self.comboBoxData就是你的AppDelegate中定义的一个属性咯。

//  下拉框数据
@property (nonatomic,strong) NSArray* ComboBoxCellData;
//  初始化下拉框数据
self.comboBoxCellData = @[@"text",@"textarea",@"password",@"datetime"];

第三种做法,使用直接添加


注意使用Interface-Builder将元素拖拽到代码里做个Outlet

  1. 打开你的XIB文件
  2. 选择双环
  3. ComboBoxCell直接拖拽到你的AppDelegate属性区

    注意别弄错了,要弄Cell不是Column,之后你就可以直接添加数据给它了

例如:

[self.comboBoxCell addItemsWithObjectValues:@[@"text",@"textarea",@"password",@"datetime",@"hidden"]];

第四种做法,使用NSComboBoxCellDataSource


开启元素的Uses Data Source哦别忘了!
image.png

这里说一下,XCode可以两种方式实现dataSource

  1. 代码设置dataSource

    //  设置下拉框数据源
    [self.comboBoxCell setDataSource:self];
  2. Interface-Builder拖拽实现dataSource

设置好dataSource,然后在代码里实现NSComboBoxDataSource协议,例如:

@interface AppDelegate () <NSComboBoxCellDataSource>

设置数据

@property (nonatomic,strong) NSArray* comboBoxCellData;
// ...
self.comboBoxCellData = @[@"text",@"textarea",@"password",@"datetime",@"hidden"];

并实现以下接口,两个啊

#pragma mark -
#pragma mark ***** 表格下拉框的数据源 *****

//  填充下拉框数据大小
-(NSInteger)numberOfItemsInComboBoxCell:(NSComboBoxCell *)comboBoxCell{
    return [self.comboBoxCellData count];
}

//  获取下拉框数据
-(id)comboBoxCell:(NSComboBoxCell *)comboBoxCell objectValueForItemAtIndex:(NSInteger)index{
    return [self.comboBoxCellData objectAtIndex:index];
}

然后就OK了

其他


如你所见我成功的设置了,很逼性是吧!当然了这个工具自己用啊

废话不多说~当然了,愿意用哪种都行,哈哈操

]]>
<![CDATA[Charles复制出的CURL无法导入PostMan]]> https://www.codeshif.com/archives/22.html 2018-12-20T00:30:00+08:00 2018-12-20T00:30:00+08:00 admin https://www.codeshif.com 如图所示,复制CURL Request

当复制出来的Charles CURL数据不能成功导入PostMan,如下所示

这时候查看复制出来的数据:

curl -H 'Host: xxx.com' -H 'Accept: application/json' -H 'User-Agent: kwai-ios' -H 'Accept-Language: zh-Hans-CN;q=1' --compressed 'http://xxx.com'

问题出现在结尾网址,请将结尾网址提到最前面就可以了。

curl 'http://xxx.com' -H 'Host: xxx.com' -H 'Accept: application/json' -H 'User-Agent: kwai-ios' -H 'Accept-Language: zh-Hans-CN;q=1' --compressed

这样就OK了

]]>
<![CDATA[PostMan从Charles复制CURL出来的不能成功执行]]> https://www.codeshif.com/archives/21.html 2018-12-20T00:27:00+08:00 2018-12-20T00:27:00+08:00 admin https://www.codeshif.com 从Charles导出来的CURL数据,修改后导入PostMan执行并不成功,如图所示:

image-20181220002055015

但是直接执行该代码在SHELL却是成功的!

image-20181220002149168

问题出现在哪里?检查了发现是代码参数里面的字段被编码了,怎么解决呢?

直接打开Chrome,然后用decodeURIComponent(代码)即可,例如

decodeURIComponent(`curl 'http://api.gifshow.com/rest/n/feed/hot?appver=5.11.1.750&did_gt=1536039663222&did=C7C4E156-7E68-42E7-A223-EF1DDA20892F&extId=b4e947c925be9624884ccd4c290233f2&c=a&ud=406159254&ver=5.11&sys=ios12.1&mod=iPhone10%2C3&net=%E4%B8%AD%E5%9B%BD%E8%81%94%E9%80%9A_5' -H 'Host: api.gifshow.com' -H 'X-REQUESTID: 1306738266' -H 'Accept: application/json' -H 'User-Agent: kwai-ios' -H 'Accept-Language: zh-Hans-CN;q=1' --data "__NStokensig=226dd3f2ac68ff24be93809824852a4afce71a2605b1277d3f6c0aa0798b1754&client_key=56c3713c&count=20&country_code=cn&id=17&language=zh-Hans-CN%3Bq%3D1&needInterestTag=0&pcursor=1&pv=false&refreshTimes=2&sig=f5a492715f5a00d625e97abe73e078de&source=1&token=322bfccaec274d769bb69be4a75a16e1-406159254&type=7" --compressed`)

拿到结果就直接重新导入到PostMan就OK了!

]]>
<![CDATA[Mac下Charles iOS无法连接Charles,不弹窗口解决办法]]> https://www.codeshif.com/archives/15.html 2018-10-29T19:17:00+08:00 2018-10-29T19:17:00+08:00 admin https://www.codeshif.com 部分的路由器不知道设置了什么鬼东西,让你在同一WIFI下并不能正常连接Charles,所以开个个人热点吧!!
你用一个手机开热点,然后把电脑连接到热点,iOS设备也连接到该热点,然后连接Charles的代理,瞬间弹窗了,我操。

所以别相信什么路由器鬼东西,还是用热点比较靠谱,问题是……你得有两台手机,嘿嘿

]]>