手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表2024年09月的文章

IOS开发笔记(swift)

 笔记,从OC翻译成swift。遇到点问题

NSDictionary 和 nameRange 上有点小问题

NSString *plainText = [NSString stringWithFormat:@"%@ test" , @"click"];

NSMutableAttributedString *styleText = [[NSMutableAttributedString alloc] initWithString:plainText]

NSDictionary *attr = @{NSFontAttributeName: [UIFont boldSystemFontOfSize : statusLabel.font.pointSize ]};

NSRange nameRange = [plainText rangeOfString: title ]

[styleText setAttributes:attr range:nameRange ]

statusLabel.attributeText = styleText;

这是OC的代码,转成swift的时候有点问题,第1是NSDictionary不知道怎么写了。。。array好象无法一下子转成NSDictionary,第2就是在用rangeOfString的时候,plainText。因为是NSString,因此可以直接使用rangeOfString,但swift定义字符串时,var plainText = "test" + "click" 这是string不是NSString...

所以查了点资料最后改成下面的代码

var plainText = title! + " button pressed";

var styleText = NSMutableAttributedString(string: plainText);

var attributes : NSDictionary = [NSFontAttributeName : UIFont.boldSystemFontOfSize( statusLabel.font.pointSize )]

let nameRange : NSRange  = (plainText as NSString).rangeOfString(title!);

//styleText.setAttributes(attributes, ))

styleText.setAttributes(attributes, range: nameRange);

statusLabel.attributedText = styleText;

 

----

上面的那个plainText as NSString就OK了。不过我需要再尝试一下,我是不是可以直接var plainText:NSString = title! + " button pressed";

[确认OK,如果真的需要用rangeOfString,应该还是在之前先得强类型一下比较好]

-----

今天算是注意了,所以下次应该可以记得,比如Int(xxxx),强制 转换, (sring as NSString) 也可以作一个转换

几个常见的命令:cat,head,tail,vim

常常遇到这样的问题,出门在外,突然收到消息说程序出错了,打开网页一看,居然是xxxx.php 第 n行处理xxx有错误。这时候,如果有电脑,还好办一点。如果没有怎么办?

手机上我装 了issh ,远程上线后直接看一下好象也是个办法,这时候,上面的几个命令就有用了。cat / head /tail / vim

cat -n xxxx.php ,先大概的瞄一下。

如果是前10行,默认head就可以看了,如果超出一点,比如前20行,head -n 20 xxx.php

如果是尾部,tail -n 20 xxxx.php (tail 命令更适合用来查看log文件,如tail -f xxx.log,你就可以盯着屏幕了)

看起来这样都能看到问题,可如果不知道文件行数怎么办?

cat xxx.php |wc -l,先看一下行数

如果想直接改掉,就vim xxx.php,然后 :30 ,直接跳至30行,直接xxxx就改了

嗯,如果是自己的项目这样可以,如果不行,还是安稳点,不过这些小技巧还是可以记一下的

 

久未更新,上来发个牢骚

 不得不说,就目前为止,我MAC下面必装 的软件就是MacJournal了,当然 我这是指工具软件。在没有Onenote的前提下,它是我用到现在最舒服的软件之一,虽然他有很多让我不爽的地方,但好歹,他能够让我记事。

不要和我提什么evernote之类的,它不适合我。

在翻开Macjounral的时候,突然看到了一年前有人留 下的一段话:

XML/HTML代码
  1. 我个人推荐学习顺序。   
  2. 基础部分  
  3.     一、UIView及其子类 UILabel UITextFiled UIImageView UITextView UITableView [重点]  等等以UI开头的视图  
  4.         特别需要搞明白UITableView,一通百通。      
  5.     二、NSObject 子类, 就是NSString  NSNumber  NSArray  NSDictionary == 以NS的类型对象 。     
  6.     三、对象的@property属性和其涉及的内存机制,ARC虽好,但是我不推荐不懂非ARC。    
  7.     四、Animation 动画效果,包括UIView提供的动画效果,CA动画效果,CI动画效果,更深层次的3D动画效果。  
  8.     五、BLOCK和GCD。  
正好借着双11的机会买了不少书,终于又可以看起来了。

话说这些年乱看看了不少东西,却没有深入,都是浅尝即止。这次是逼着自己每天必看。每天至少半小时(本想夸海口要1小时或者2小时,想想又不敢保证,但至少半小时还是能抽得出)

 

Tags: ios

Yii2-smarty的一些小坑

在写本文前我不得不说一句,其实我是不想用smarty的,我想尝试一下twig,但是phpstorm的Twig插件真要命,卡成翔,所以我只能用smarty。为什么不用prado了呢?官方说不支持了,我晶啊

在使用smarty的时候官方的代码和例子看上去很美,不过要注意几点

1、用yii2-smarty,还是必须得用layout,如果你不支持layout文件,默认就是/layouts/main.php,天啊,为什么是PHP?而且在这里面也还真的能用PHP代码。整个都崩溃了

2、你可以指定layout文件,比如:main.tpl,OK你必须得象PHP文件一样,得写{$this->head()},{$this->startBody()}{$this->endPage()}等,否则 ClientScript功能就无法使用

3、如果你指定layout=false,那么,就不支持ClientScript了。因为你incude file='xxx.tpl',在每一个独立的文件里都必须要象2中一个个的this->head(),this->endPage全写上

4、再来一个bug:{registerJsFile url=''},这个函数有BUG

原来是:

PHP代码
  1. public function functionRegisterJsFile($params$template)  
  2. {  
  3.     if (!isset($params['url'])) {  
  4.         trigger_error("registerJsFile: missing 'url' parameter");  
  5.     }  
  6.   
  7.     $url = ArrayHelper::remove($params'url');  
  8.     $key = ArrayHelper::remove($params'key', null);  
  9.     $depends = ArrayHelper::remove($params'depends', null);  
  10.     if (isset($params['position']))  
  11.         $params['position'] = $this->getViewConstVal($params['position'], View::POS_END);  
  12.   
  13.     Yii::$app->getView()->registerJsFile($url$depends$params$key);  
  14. }  

改成为:

PHP代码
  1. /** 
  2.  * Smarty function plugin 
  3.  * Usage is the following: 
  4.  * 
  5.  * {registerJsFile url='http://maps.google.com/maps/api/js?sensor=false' position='POS_END'} 
  6.  * 
  7.  * Supported attributes: url, key, depends, position and valid HTML attributes for the script tag. 
  8.  * Refer to Yii documentation for details. 
  9.  * The position attribute is passed as text without the class prefix. 
  10.  * Default is 'POS_END'. 
  11.  * 
  12.  * @param $params 
  13.  * @param \Smarty_Internal_Template $template 
  14.  * @return string 
  15.  * @note Even though this method is public it should not be called directly. 
  16.  */  
  17. public function functionRegisterJsFile($params$template)  
  18. {  
  19.     if (!isset($params['url'])) {  
  20.         trigger_error("registerJsFile: missing 'url' parameter");  
  21.     }  
  22.   
  23.     $url = ArrayHelper::remove($params'url');  
  24.     $key = ArrayHelper::remove($params'key', null);  
  25.     $params['depends'] = ArrayHelper::remove($params'depends', null);  
  26.     if (isset($params['position']))  
  27.         $params['position'] = $this->getViewConstVal($params['position'], View::POS_END);  
  28.   
  29.     Yii::$app->getView()->registerJsFile($url$params$key);  
  30. }  

其实就是$params['depends']这个参数。registerJsFile只能接受3个参数,但事实上用了4个参数,所以调整一下即可

 

Tags: yii2, smarty, twig

怎样删除vmware fusion

早些年用vmware fusion的时候,就感觉速度不行。总是觉得卡卡顿顿的,后来用了pd后才发现,真心不是一个量级的

vmware我分配了2G内存,才跑起来不卡,我用PD,512M都能飞一样的。

但早期我删除的vmware的时候,是直接把vmware fusion.app拖到垃圾筒里了,结果。它的虚拟网卡还在,这让我很烦恼,如今,有一个比较方便的方法:

XML/HTML代码
  1. rm -rf /Library/Application\ Support/VMware/  
  2. rm -rf /Library/Preferences/VMware\ Fusion  
  3. rm -rf ~/Library/Application\ Support/VMware\ Fusion  
  4. rm -rf ~/Library/Caches/com.vmware.fusion  
  5. rm -rf ~/Library/Preferences/VMware\ Fusion  
  6. rm -rf ~/Library/Preferences/com.vmware.fusion.LSSharedFileList.plist  
  7. rm -rf ~/Library/Preferences/com.vmware.fusion.LSSharedFileList.plist.lockfile  
  8. rm -rf ~/Library/Preferences/com.vmware.fusion.plist  
  9. rm -rf ~/Library/Preferences/com.vmware.fusion.plist.lockfile  
  10. rm -rf ~/Library/Preferences/com.vmware.fusionDaemon.plist  
  11. rm -rf ~/Library/Preferences/com.vmware.fusionDaemon.plist.lockfile  
  12. rm -rf ~/Library/Preferences/com.vmware.fusionStartMenu.plist  
  13. rm -rf ~/Library/Preferences/com.vmware.fusionStartMenu.plist.lockfile  

 

运行之前,记得先sudo -s 进入管理员模式。

上面的数据不是我平空捏造,它来自官方:http://kb.vmware.com/selfservice/microsites/search.do?cmd=displayKC&docType=kc&docTypeID=DT_KB_1_1&externalId=1017838

同时,该文里还有手动删除 3.x的办法,我想,现在2014年应该没有3.x的用户了吧?

 

 

Tags: vmware