2011-12-19 14 views
1

したがって、シリアル化され、ファイルに格納されているビューがあります。そのビュー内ではnサブクラスのUILabelsであり、唯一の違いはliveプロパティです。私はUILabelサブクラス内にinitwithcoderとencodewithcoderを持っていますが、まだラベル内にカスタム変数を取得できません。私はサブクラスのメソッドと以下を含んでいます。どんな助けもありがとうございます。サブクラス化されたUILabelは、シリアル化されたビュー内に格納され、カスタムバーを格納しません。

カスタムUILabel:私だけの中のラベルを含むビューを、アーカイブ解除していますので

- (id) initWithCoder:(NSCoder *)decoder 
{ 
    self = [super initWithCoder:decoder]; 

    if (self != nil) { 
     self.live = [decoder decodeBoolForKey:@"live"]; 
    } 
    return self; 
} 

-(void)encodeWithCoder:(NSCoder *)aCoder { 
    [aCoder encodeBool:self.live forKey:@"live"]; 
} 

、私は、iOSがカスタムラベルをアーカイブ解凍しないと仮定しますか?

おかげ

+0

ビューをシリアル化する理由がわかりません。適切なことは変数を直列化し(おそらくplistで)、後で必要なときにビューをインスタンス化することです。 – sosborn

+1

私が何を意味するのかわかっている場合は、外部からラベルをアーカイブ/アーカイブ解除するコードを表示してください。また、super encodeWithCoderの呼び出しがありません。 – jrturton

+0

そして、意外なことに、それが私が逃したものです。ありがとうございます。すべては今働いている。 unarchiverは、単にファイルからバイトを取得し、データからビューをロードします。あなたが答えとしてそれを追加する場合、私はそれを正しいとマークし、それをあなたに推薦します。ありがとうございました! –

答えて

0

あなたは[super encodeWithCoder:aCoder]への呼び出しが欠落しています。これは、間違ってシリアル化されたオブジェクトになるでしょう、私は結果が何であるか分かりませんが、あなたはそれらの1つを見つけたようです!

+0

結果は、オブジェクトを返すが、私が脱直列化したものだけで、リンゴがラベルなどに入れたファンシーなものは一切ありません。 –

関連する問題