2012-03-06 56 views
0

編碼二維數組我有兩個二維數組的自定義對象如下:在Objective-C

float a[5][5]; 
float b[5][10]; 

我想編碼這個對象:

- (void)encodeWithCoder:(NSCoder *)coder 
{ 
    // Encode a 
    // Encode b 
} 

我怎麼能編碼和解碼這些二維數組?我無法找到適當的方法來執行此操作。 在此先感謝,

回答

3

您可以創建一個結構與:

typedef struct myStruct { 

    float a[5][5]; 
    float b[5][10]; 

}MyStruct; 

然後使用NSValue將它們編碼爲對象。

MyStruct i; 
memset(&i, 0, sizeof(i)); 
//Set values on struct 

NSValue *v = [NSValue valueWithBytes:&i objCType:@encode(MyStruct)]; 

現在,您可以將您的結構視爲對象,然後使用NSArrays等。

要讀取的值,你可以使用:

MyStruct i; 

[v getValue:&i]; 

我做了這樣的具有流和傳統服務器工作,它工作順利。

希望它有幫助。

+0

感謝您的詳細信息 – Sami 2012-03-06 15:13:21

1

將它們粘貼到用於編碼/解碼過程的objective-c容器中。

1

沒有預先建立的方法 - 你需要自己寫。最簡單的方法是先寫兩個int,然後寫出所有的R*C元素的行數和列數。

解碼同樣簡單 - 讀取RC的兩個整數,然後運行兩個嵌套循環讀取float s。

定義兩個輔助函數以避免複製粘貼同一代碼兩次。