Just My Life & My Work

Posts tagged ‘array’

[iOS] Object 轉換成 JSON

在iOS中有兩種常用的容器Object,就是DictionaryArray,而現在資料傳輸到伺服器幾乎都在使用JSON,於是就有很多機會要將Object 轉換成 JSON

註:

JSON(JavaScript Object Notation,JavaScript物件表示法,讀作/ˈdʒeɪsən/)是一種由道格拉斯·克羅克福特構想和設計、輕量級的資料交換語言,該語言以易於讓人閱讀的文字為基礎,用來傳輸由屬性值或者序列性的值組成的資料物件。儘管JSON是JavaScript的一個子集,但JSON是獨立於語言的文字格式,並且採用了類似於C語言家族的一些習慣。

JSON 資料格式與語言無關,脫胎自JavaScript,但目前很多程式語言都支援 JSON 格式資料的生成和解析。JSON 的官方 MIME 類型是 application/json,副檔名是 .json。

(繼續閱讀…)

[C/C++] 配置2D陣列 (Allocate 2D Array)

最近要整合C/C++高人寫的Source Code,發現我自己好像斷手斷腳XD,因為要搞較為底層的記憶體空間配置⋯⋯先前寫Objective C多麼愜意,用不到的記憶體空間,系統會自動去釋放,但是在C/C++就要自己寫code處理呢!

現在想要配置2D陣列 (Allocate 2D Array),要怎麼做才好辦事呢?

以後都來這兒複製貼上吧XD~

/**
 Theme: Allocate 2D Array
 IDE: Xcode 9
 Language: C
 Date: 107/03/30
 Author: HappyMan
 Blog: https://cg2010studio.com/
 */

#include 
#include 

float** createArray(int m, int n)
{
    float* values = calloc(m * n, sizeof(float));
    float** rows = malloc(n * sizeof(float*));
    for (int i = 0; i < n; ++i) {
        rows[i] = values + i*m;
    }
    return rows;
}

void destroyArray(float** arr)
{
    free(*arr);
    free(arr);
}

int main()
{
    float** happyArr = createArray(2,3);
    happyArr[0][0] = 1;
    happyArr[0][1] = 1;
    happyArr[1][0] = 2;
    happyArr[1][1] = 2;
    happyArr[2][0] = 3;
    happyArr[2][1] = 3;

    destroyArray(happyArr);
    return 0;
}

我發現顯示code的外掛會讓下面兩行出問題~

#include <stdio.h>
#include <stdlib.h>

最後記得釋放記憶體唷~

參考:How to return a 2D array to a function in C?

[iOS] 反序陣列元素 (Reverse Array)

有時候server吐回來陣列元素的順序剛好跟我們所期望的相反,如想要[1,2,3,4,5],卻拿到[5,4,3,2,1]。

此時就需要做反序陣列元素 (Reverse Array)的動作。我們可以有兩種做法,一種是索引(index)由大到小存取陣列元素,一種是陣列元素前後對等交換(最左與最右,左數第二與右數第二,依此類推⋯⋯),下列程式碼實作後者,又分可變陣列(NSMutableArray)不變陣列(NSArray)

將程式碼放到.m檔裡即可使用,或是寫成類別來引用。


/**
 Theme: Reverse Array
 IDE: Xcode 6
 Language: Objective C
 Date: 103/10/14
 Author: HappyMan
 Blog: https://cg2010studio.wordpress.com/
 */
@implementation NSArray (Reverse)

- (NSArray *)reversedArray {
    NSMutableArray *array = [NSMutableArray arrayWithCapacity:[self count]];
    NSEnumerator *enumerator = [self reverseObjectEnumerator];
    for (id element in enumerator) {
        [array addObject:element];
    }
    return array;
}

@end

@implementation NSMutableArray (Reverse)

- (void)reverse {
    if ([self count] == 0)
        return;
    NSUInteger i = 0;
    NSUInteger j = [self count] - 1;
    while (i < j) {
        [self exchangeObjectAtIndex:i
                  withObjectAtIndex:j];

        i++;
        j--;
    }
}

@end

參考:How can I reverse a NSArray in Objective-C?

[iOS] POST在參數中有array或dictionary

哈~不知道怎麼下標題,不過直接看圖和程式碼就能懂囉~

如果用post把資料傳到server上,參數是arraydictionary時,key和value要怎麼下呢?

POST array dictionary

這是在PostMan上下KeyValue

(繼續閱讀…)

[iOS] CSV轉Plist

寫iOS時常需要讀取檔案,我們不希望把資料key進程式碼,因為會擾亂編程觀感,而且不易修改和維護,於是將CSV轉為Plist會是個好方法! 稍微來瞭解一下CSV和Plist是什麼格式吧~

  • CSV逗號分隔值(Comma Separated Values),是一種純文本格式,用來存儲數據。在CSV中,數據的欄位由逗號分開,程序通過讀取文件重新創建正確的欄位。
  • Plist屬性列表(Property List),在Mac OS X的Cocoa,NeXTSTEP和GNUstep編程框架中,屬性列表檔案是一種用來儲存序列化後的物件的檔案,它的副檔名為.plist,因此通常被稱為plist檔。Plist檔案通常用於儲存使用者設定,也可以用於儲存捆綁的訊息

Comma Separated Values (繼續閱讀…)

[iOS] 存取plist檔

什麼是plist?全名為property list,在所有的資料儲存方法中,最容易莫過於Property List了,陣列、字典、字串和資料都可以存成XML格式的Property List,事實上,NSUserDefaults就是一個Property List。

不過並非所有的資料都適合用它來儲存,像是過多的資料或是自己設計的一些複雜物件都不太適合,因為Property List會一次將整個文件內容讀取到記憶體中,無論效率上或是空間上都不是很理想。

使用plist存取檔案有什麼特色?

  • Property list 可以為 binary 格式或 XML 格式
  • plist 檔案可用一般文字編輯器做修改或 property list editor 做修改
  • NSArray、NSDictionary 都有方法能直接將內容以 XML plist 的格式記錄於檔案
  • property list object 也就是 plist 結構支援的物件型態
資料型態 XML 元素 Foundation framework 類別
array <array> NSArray
dictionary <dict> NSDictionary
string <string> NSString
data <data> NSData
date <date> NSDate
number – integer <integer> NSNumber(intValue)
number – floating point <real> NSNumber(intFloat)
Boolean <true/>或<false/> NSNumber(boolValue)

(繼續閱讀…)

標籤雲

%d 位部落客按了讚: