私はこのような忙しい状況に陥っています。 見て、あなたは助けることができるかどうか教えてください...NSDataからのUnArchivingの後、My Objectsデータメンバ(NSString *)の値が「0x7fc0ab73d040」に汚染されました
ここ私はNSUserDefaultsに保存、私のCustomObjects(NSCoderを実装している「アラームオブジェクト」)を使用しています
AlarmObjectは、一つの特性(NSStringの*「)tuneAddressを持っています「
のような値を有する "曲/アラーム%20clock%20ringtones%20-%20free%20download。%20Mp3%20Alarm%20clock%20tones、%20sounds%20および%20ringtones%20for%%の20phones.mp3 20mobile"
k今このようなアドレス(%20)で解決された空白を持つのは良くありませんが、どういうわけかこれを変更することはできません。それはまだ私のコントロール下にないサーバーから来ています。 「tuneAddress」とするときに上に示したように、私は適切な値で「NSKeyedArchiver archivedDataWithRootObject」を使用してNSUserDefaultsにいくつかのオブジェクトを追加する試みが戻っ「NSKeyedUnarchiver unarchiveObjectWithData」を通じて、それを持っている時はいつでも
まあ、 創刊ここ問題があります。
ここでは、 'tuneAddress'の値を '0x7fc0ab73d040'として戻します。 それを見てくださいあなたはこれについて何かを言うことができる場合..?私はそれがここに
エラーEXC_BAD_ACCESS(コード= EXC_i386_GPFLTを)明らかに[encoder encodeObject:self.tuneLocalAddress forKey:@"tuneLocalAddress"];
を停止し、 "NSKeyedArchiver archivedDataWithRootObject" を通じて戻ってそれをアーカイブしようとすると、
第二の問題は最初のものに依存しています。ここで
は私がAlarmObject
ここ[[NSUserDefaults standardUserDefaults] setObject:[newString stringByReplacingOccurrencesOfString:@" " withString:@"%20"] forKey:TuneChoosenForAlarm_Key];
AlarmObject * newAlarmObj = [[AlarmObject alloc] init];
newAlarmObj.tuneLocalAddress = [[NSUserDefaults standardUserDefaults] objectForKey:TuneChoosenForAlarm_Key];
NSMutableArray * newArray = [[NSMutableArray alloc] initWithObjects:newAlarmObj, nil];
for (AlarmObject * alarmObj in self.alarmsArray) {
[newArray addObject:alarmObj];
}
self.alarmsArray = newArray;
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:self.alarmsArray];
[[NSUserDefaults standardUserDefaults] setObject:data forKey:AlarmsDataDictonaryKey];
http://stackoverflow.com/questions/7920071/how-to-url-decode-in-ios-objective-cこれを使用して通常の文字列に変換し、アーカイブ/アーカイブ解除を実行します。 –
コードを貼り付けてください。 –
保存するデータとデータの種類。 @vadian @ –