2016-10-13 2 views
0

저는 거의 하루 종일 바쁜 상황에 처해 있습니다. 보고 당신이 도울 수 있다면 알려주세요 ...NSData에서 UnArchiving 후 My Objects 데이터 멤버 (NSString *) 값이 '0x7fc0ab73d040'에 오염되었습니다.

여기

내가 NSUserDefaults에 저장, 내 CustomObjects (NSCoder 구현 '알람 개체')를 사용하고

AlarmObject은 하나 개의 속성 (있는 NSString *) 'tuneAddress있다

"%의 20phones.mp3 20mobile/알람 % 20clock % 20ringtones % 20 % 20free % 20download. %가 20Mp3 % 20Alarm % 20clock % 20tones % 20sounds % 20 ° %의 20ringtones % 20for % 곡 'LIKE'를 갖는 값

k 지금이 주소 (% 20)에서 해결 된 공백이 좋지 않지만 어쨌든 이것을 바꿀 수는 없습니다. 그것은 아직 내 통제에 있지 않은 서버에서 오는 것입니다. 'tuneAddress'때까지 위에 표시된 것처럼 적절한 같은 값으로 "NSKeyedArchiver archivedDataWithRootObject"을 사용 NSUserDefaults에 일부 개체를 추가 시도가 다시 "NSKeyedUnarchiver unarchiveObjectWithData"을 통해 그것을 가지고 때마다

음, 창간호 여기 문제는 .

여기서 'tuneAddress'값을 '0x7fc0ab73d040'으로 다시 가져옵니다. 제발 이것에 대해 뭔가를 말할 수 있다면 ..? 내가 통해 다시 보관하려고 할 때

두 번째 문제가 첫 번째에 달려있다 "NSKeyedArchiver archivedDataWithRootObject는"여기가

[encoder encodeObject:self.tuneLocalAddress forKey:@"tuneLocalAddress"]; 

공개 오류 EXC_BAD_ACCESS (코드 = EXC_i386_GPFLT)를 중지합니다. 여기

내가 여기

[[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]; 
+0

http://stackoverflow.com/questions/7920071/how-to-url-decode-in-ios-objective-c, 이것을 사용하여 일반 문자열로 변환 한 다음 보관/보관 취소를 수행하십시오. –

+0

코드 붙여 넣기. –

+0

저장하는 데이터 및 데이터. –

답변

0

을 AlarmObject하기 위해 뾰족한 문자열을 저장 어떻게 좀 보여, 내가 실수 기본 수준이고, 이유를 발견했다. 'AlarmObject'를 생성하는 동안 여기에 'tuneLocalAddress'라는 메모리 속성이 "잘못 할당 된"곳이있었습니다.

ARC로 작업하고 있고 해당 객체가 사용되기 전까지 일부 속성 (tuneLocalAddress)의 값을 메모리에 유지하려는 경우 here에서 약간의 아이디어가있는 '유지'또는 '강'을 사용해야합니다.

당신이 이해할 수 있기를 바랍니다. 죄송합니다. 어떤 문법 실수 나하실 수 있습니다.

관련 문제