NSUserDefaults
에 문제가 있습니다. 처음으로 구현해야하므로 나와 함께 견뎌주십시오.NSUserDefaults를 사용하여 배열 저장하기
휴대 전화에 저장하려고하는 데이터는 내 앱의 장바구니에있는 객체 배열입니다. 장바구니에 추가 된 모든 항목을 표시하기 위해 내 장바구니 table view
을로드하는 동일한 배열입니다.
배열에는 서로 다른 속성 (NSStrings
및 NSNumbers
: 제품 이름, 크기, 가격 등)을 가진 두 가지 종류의 개체가 있습니다. 누군가 내 배열에 plist에 넣을 속성이 너무 많아서 아무 것도 저장하지 않는 이유가 있음을 제안했습니다.
여기 내 코드입니다. singleton
메서드를 사용하고이 코드를 내 singleton
클래스에 삽입했습니다.
- (void)save
{
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:self.cartArray forKey:@"tableViewCartData"];
[userDefaults synchronize];
NSURL *plistURL = [[self documentsDirectory]URLByAppendingPathComponent:@"cartItems.plist"];
[self.cartArray writeToURL:plistURL atomically:YES];
}
-(void)load
{
NSURL *plistURL = [[self documentsDirectory]URLByAppendingPathComponent:@"cartItems.plist"];
self.cartArray = [NSMutableArray arrayWithContentsOfURL:plistURL];
if (self.cartArray == nil)
{
self.cartArray = [NSMutableArray new];
}
}
-(NSURL *)documentsDirectory
{
NSFileManager *fileManager = [NSFileManager defaultManager];
NSURL *url = [fileManager URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask].firstObject;
return url;
}
내 문서 디렉토리에서 plist를 볼 수 있습니다. 그러나 거기에는 아무것도 없습니다.
편집
난 그냥 내 로그에이 눈치:
CityBicycleCompany [4239 : 249463] 형식에 대한 잘못된 속성 목록 : (200) (속성 목록 유형 'CFType'의 객체를 포함 할 수 없습니다) 2014-12-07 20 : 52 : 10.037 CityBicycleCompany [4239 : 249463] 비 속성 목록 개체 ( "")를 키 테이블의 NSUserDefaults/CFPreferences 값으로 설정하려고 시도했습니다 .ViewCartData
그것이 의미하는 것이 확실하지 않습니다. CFType이란 무엇입니까?
편집 여기서 2
순간에 self.cartArray
의 PO이다 ("쇼핑 카트"에 하나의 오브젝트를 추가). ChosenAccessory는 사용자 정의 object
카트에 추가했습니다.
<__NSArrayM 0x79788380>(<ChosenAccessory: 0x796d1f80>)
의 당신 배열을 저장 당신이 NSUserDefaults에 저장하려면, 가변 NSArray를 – NullData
@NullData있는 NSMutableArray –
를 사용하는 방법입니다 귀하의 배열에있는 모든 plist 준수해야하며 뭔가가되지 않을 수도 있습니다. cartArray의 내용을 인쇄하여 질문에 추가 할 수 있습니까? –