클래스 카드의 인스턴스를 포함하는 myWallet이라는 변경 가능한 배열을 저장하는이 방법이 있습니다.NSUserDefaults에 저장된 값 덮어 쓰기
- (void)saveMyWallet
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[NSKeyedArchiver archivedDataWithRootObject:self.myWallet] forKey:@"myWalletArray"];
[defaults synchronize];
}
내가 가진 카드 클래스에는 이름, 핀 및 점수의 세 가지 인스턴스 변수가 있습니다. 지금까지, UserDefaults에 카드의 새로운 인스턴스를 저장하는 것은 괜찮습니다. 포인트 계산을 진행할 때 포인트를 업데이트하기 때문에 포인트의 값을 어떻게 덮어 쓸 수 있는지에 대한 제안을 알고 싶습니다. 여기
이#import "Card.h"
@implementation Card
@synthesize name = _name;
@synthesize pin = _pin;
@synthesize points = _points;
@synthesize pointsToDeduct = _pointsToDeduct;
- (id)initWithCoder:(NSCoder *)coder
{
self = [[Card alloc] init];
if(self != nil) {
self.name = [coder decodeObjectForKey:@"name"];
self.pin = [coder decodeObjectForKey:@"pin"];
self.points = [coder decodeObjectForKey:@"points"];
}
return self;
}
- (void)encodeWithCoder:(NSCoder *)coder
{
[coder encodeObject:self.name forKey:@"name"];
[coder encodeObject:self.pin forKey:@"pin"];
[coder encodeObject:self.points forKey:@"points"];
}
- (double) subtractPoints:(double) requiredPoints
{
double latestPoints;
latestPoints = ([self.points doubleValue] - requiredPoints);
return latestPoints;
}
@end
그리고 마지막으로 Card.h
#import <Foundation/Foundation.h>
@interface Card : NSObject <NSCoding>
@property (nonatomic, strong) NSString *name;
@property (nonatomic, strong) NSString *pin;
@property (nonatomic, strong) NSNumber *points;
@property (nonatomic, strong) NSMutableArray *pointsToDeduct;
- (double) subtractPoints: (double) requiredPoints;
- (void) encodeWithCoder:(NSCoder *)coder;
- (id) initWithCoder: (NSCoder *)coder;
@end
Card.m 내 카드 클래스
이며, 여기에 위임 방법은있는 점의 새로운 값 (resultPoints라는 이름이 붙어 있어야합니다).
- (void)perksDetailsViewController:(PerksDetailsViewController *)sender didPassRequiredPoints:(NSNumber *)requiredPoints withCard:(Card *)selectedCard
{
double perksPoints = [requiredPoints doubleValue];
self.resultingPoints = [NSNumber numberWithDouble:[selectedCard subtractPoints:perksPoints] ];
NSLog(@"points remaining %@", self.resultingPoints);
}
제안 사항과 함께 저를 포격하십시오 :) 미리 감사드립니다!
감사합니다. 그것을 지금 할 것이다 :) – Grauzten
우리는 채팅을 진행할 수 있습니까? 몇 가지 코드를 보여야하는데, 여기에 붙여 넣으면 상당히 엉망이 될 것입니다. – Grauzten
예, 문제가 없습니다. – graver