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

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年4月29日 星期三

[iOS] NSArray / NSMutableArray 與 全域變數

貓這次遇到的問題是,我需要一個全域變數而且是陣列,但是這個陣列需要可以變動式的.

因此NSArray就被排除在外面,講到NSArray就稍微講一下,基本上他是不能添加或減少任何元

素的,所以要改用mutable版本.


首先,第一步我們要在appdelegate.h這個檔案define一個全域的變數


#define global ((AppDelegate *)[[UIApplication sharedApplication] delegate])

global可以換成任何你想要的文字

然後還要宣告一個@property


@property (nonatomic, retain) NSMutableArray *globalData;

(globalData一樣可以換任何文字)


第二步,切換到appdelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    
    global.globalData = [[NSMutableArray alloc] initWithCapacity:300];
    
    return YES;

}

//初始化NSMutableArray

然後就可以使用囉!這邊可以用下面的for迴圈來看內容是什麼

    for(int i = 0; i < global.globalData.count; i++){
        NSLog(@"i=%@",[global.globalData objectAtIndex:i]);

    }

然後因為這是全域變數,所以不管在viewcontroller1,2,3,4....都可以看到這個變數

使用方法一樣是global.globalData來呼叫他,下一篇搭配UDP來操作,這次的教學完畢

end