顯示具有 nsstring 標籤的文章。 顯示所有文章
顯示具有 nsstring 標籤的文章。 顯示所有文章

2015年6月4日 星期四

[iOS] NSData NSMutableData append / NSString to Char 等問題解法

不是我要說iOS,轉來轉去每個都好麻煩0rz

好吧!

首先,這邊目標是:結合NSString + char[] ,最後變成NSData輸出

NSString *myString = @"123abcdfhhhhhhh";
char *aa = [myString UTF8String];

NSLog(@"%s",aa);
NSLog(@"%lu",sizeof(aa));

NSLog(@"%lu",(unsigned long)[myString length]);

這邊設定一個string ,然後讓他轉utf8格式放到char指標裡面


nslog會顯示

2015-06-04 15:55:32.897 v1.0[4462:60b] 123abcdfhhhhhhh
2015-06-04 15:55:32.898 v1.0[4462:60b] 4

2015-06-04 15:55:32.900 v1.0[4462:60b] 15

所以要特別注意sizeof()並不是mystring分開後的個數,而是4byte 

因為這個錯誤搞了半天0rz.....

到這邊已經很順利的把nsstring 改為char了,但是要怎樣把這兩樣結合呢?


    const unsigned char two[]    = {80 ,67 ,77 ,83 , 2 ,2};//第二個char[]
    
    NSMutableData * muData = [[NSMutableData alloc] init];//用來結合的容器
    
    NSMutableData * data = [NSData dataWithBytes:two length:sizeof(two)];
    NSMutableData * data2 = [NSData dataWithBytes:aa length:[myString length]];//這邊要用length


------------------結合--------------------

   [muData appendData:data];
   [muData appendData:data2];

------------------結合--------------------

    NSString *strData = [[NSString alloc]initWithData:muData encoding:NSUTF8StringEncoding];
   
    NSLog(@"%@",strData);

最後輸出成NSString 方便nslog看成果為如何?


2015-06-04 15:55:43.650 v1.0[4462:60b] PCMS123abcdfhhhhhhh


最後使用


NSData *aData = [strData dataUsingEncoding: NSASCIIStringEncoding];

轉為NSData~


完成!

end

2015年5月26日 星期二

[iOS]NSString & EXC_BAD_ACCESS ERROR solution

問題:

使用全域變數NSString *string,使用時候出現exc_BAD_ACCESS???


答案:


@property (nonatomic,retain)NSString *string;

不可以使用assign 要使用retain!


解決!

end

2015年4月30日 星期四

[iOS] 如何讓object型態轉換為NSString並顯示在UI上?

今天又遇到讓我卡很久的難題了,一樣把它記錄起來以免日後忘記 .


首先.h檔跟storyboard(或xib檔)連結,h file長這樣:


#import <UIKit/UIKit.h>
#import "AppDelegate.h"
@interface Page1 : UIViewController
@property (weak, nonatomic) IBOutlet UILabel *in_volt;
@property (weak, nonatomic) IBOutlet UILabel *out_volt;
@property (weak, nonatomic) IBOutlet UILabel *load;
@property (weak, nonatomic) IBOutlet UILabel *bat_level;
@property (weak, nonatomic) IBOutlet UILabel *bat_backup_time;
@property (weak, nonatomic) IBOutlet UILabel *ups_status;
@property (weak, nonatomic) IBOutlet UILabel *bat_stauts;
@property (weak, nonatomic) IBOutlet UILabel *power_condition;


@end


step1:

第一步是要讓UILable可以顯示資料

所以很簡單,在要觸發的地方寫下self.(UILabel名稱).text = (nsstring型態);

好了,很顯然第一個問題就是,我們現在是object型態,該怎樣轉NSString呢?

step2:

因為要顯示的是數字,所以先把它轉為int

object to int :

[(NSString *)object  integerValue]

這樣就變成int型態囉!

step3:

轉int還是不能顯示在UILabel上阿!

所以我們還需要再轉一次,這時候使用

[NSString stringWithFormat:@"%d", (int型態)]

但是呢!Xcode會跟你說warning,所以要改成

NSString stringWithFormat:@"%ld", (強制轉換型態成long,就是前面加個(long)這樣)]

完成就長這樣:

self.in_volt.text = [NSString stringWithFormat:@"%ld", (long)[(NSString *)你填入的object型態在這邊 integerValue]];

完成!

end