exc_bad_access nsarray를 읽으려고합니다
-
06-07-2019 - |
문제
다음 코드에서는 Plist의 데이터를 읽으려고합니다.
-(void)readPreferences
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSMutableArray * myAppDefaults = [defaults mutableArrayValueForKey:@"LastList"];
myCustomObject * savedObject;
NSUInteger i;
for (i = 0; i < [myAppDefaults count]; i++)
{
NSArray * thisArray = [myAppDefaults objectAtIndex:i];
savedObject.value1 = [thisArray objectAtIndex:0];
savedObject.value2 = [thisArray objectAtIndex:1];
savedObject.value3 = [thisArray objectAtIndex:2];
savedObject.value4 = [myAppDefaults objectAtIndex:3];
[objectsArray addObject:savedObject];
}
}
어쨌든 "savedobject.value1"을 설정하려고하면 "exc_bad_access"오류가 발생합니다.
나는 이것이 기본 메모리 관리 또는 포인터/객체의 혼란 일 가능성이 높다는 것을 알고 있지만 여전히 배우고 있습니다. 누군가가 여기서 나를 도울 수 있기를 바랍니다. Sjakelien에 대한 안부
해결책
초기화되지 않았습니다 savedObject
당신이 설정할 때 value1
재산. 추가해야합니다.
savedObject = [[myCustomObject alloc] init];
당신 앞에 for
루프 속성을 설정할 수있는 유효한 개체가 되려면 루프.
다른 팁
나는 보이지 않는다 mutableArrayValueForKey
안에 NSUserDefaults
. 노력하다 arrayForKey:
대신, 그것은 당신에게 줄 것입니다 NSArray*
.
값이 반환 된 것 같습니다 defaults
불변입니다 (파일에서 물건을 얻을 때 의미가 있습니다).
반환 된 값을 확인하십시오 mutableArrayValueForKey
, 나는 그것이 nil이라고 생각합니다.
두 번째로 코드는 의미가 없습니다. 시점에서는 저장도를 할당하지만 배열에 반복적으로 삽입합니다. 값을 추출하는 방식조차도 올바르게 보이지 않습니다.
Apple 문서에서 NSUSERDEFAUTLS 참조를 살펴 보는 것이 좋습니다. 기본 사용의 예가 있습니다.
제휴하지 않습니다 StackOverflow