2012-01-27 10 views
0

私はiPhoneに保存して、必要に応じてこのバックアップをロードする必要があるunsigned char配列を持っています。 char配列の内容を説明する最も簡単な方法は、単にボタンが押された回数を表す16進数または同様の表現です。 (それはそれよりも多く複雑だけど)iPhoneに文字配列を保存する

unsigned char myCounter[28]; 

私は最善の方法は、iPhone上でこれを保存し、グローバル変数にそれをバックロードすることが何であるかを知りたいです。 NSStringに変換して、もう一度やり直してみました。これは動作しますが、私はこれをグローバル変数に格納する方法が不明です(私のすべてのc関数で利用可能です)。

申し訳ありませんが、私は全く新しいCプログラミングです。あなたはNSStringのようにそれを持っている場合は、事前

答えて

0

おかげで、あなたが呼び出すことができます。

[myString writeToFile:filePath atomically:YES encoding: NSUTF8StringEncoding error:&myErr]; 

あなたはファイルパスを指定して作成する必要があります。おそらく、あなたのアプリケーションのドキュメントディレクトリまたはApplication Supportディレクトリを指しているはずです。

0

NSArrayを使用できないのはなぜですか?普通のC配列よりもはるかに面白いです。特に、「Cプログラミングにとってはまったく新しい」場合です。

0

NSStringを後で使用するために保存する簡単な方法の1つは、NSUserDefaultsです。

NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults]; 

// set 
[userDefaults setValue:CHAR_ARRAY_CONVERTED_TO_NSSTRING forKey:@"MyKey"]; 

// get 
NSString * savedString = [userDefaults valueForKey:@"MyKey"]; 
0

ファイルシステムに保存するか、実行中のアプリケーション(またはその両方)に保存するかはわかりません。ファイルシステムへの保存は、user1118321とshoの方法で行うことができます。グローバルにアクセスしたいのであれば、私のアプローチは共有インスタンス(シングルトン)を持つクラスを作ることです。シングルトンは配列を格納し、常に異なるクラスでアクセスする必要があります。シングルトンを参照するだけで配列を返すメソッドを呼び出すだけです。 Correct way to alloc shared instance (singleton)?

クラスのヘッダは次のようになり

... 
myCounter = new char[28]; 
... 

、アクセスする:あなたがポインタを設定必要なのMyClassのあなたのinitメソッド内で

@interface MyClass : NSObject { 
    unsigned char *myCounter; 
} 
... 
@end 

をシングルトンを作成する方法

カウンターでゲッターを作成できます。例:

- (char*)getCounter 
{ 
    return myCounter; 
} 

あなたはMyClassのヘッダをインポートし、呼び出すことによって、配列を参照、配列へのアクセス権を持っていると思いたび:それはしかし、あなたは(あなたの配列のエントリ数を知ることができません

char *array = [[MyClass sharedInstance] getCounter]; 

をC-アレイ)。 私はあなたのクラスのヘッダーファイル内

#define kArraySize 28 

のようなプリプロセッサディレクティブを定義することをお勧めして配列をALLOCすると、どこか他のあなたのコードでは、それのサイズを知るために使用することができました。 この配列への書き込み/読み取りアクセスが非常に限られている場合は、NSArrayを使用することをお勧めします。

1

もしそれがちょうど任意のバイトであれば、NSDataはこれのような任意のバイト配列を表現するための最良の方法です。

NSData *counterAsObject = [NSData dataWithBytes:myCounter length:28]; 
// and then you can… 
[counterAsObject writeToFile:whereverYouWantToStoreIt atomically:YES]; 

これはあなたがすべて一緒に保存するいくつかの大規模構成の一部である場合にも、プロパティリストにNSDataのを保存することができます。

テキストの場合は、単純にNSStringを作成するだけです(おそらくこれを使ってCocoa Touchの残りの部分とやりとりすることができます)。

関連する問題