2014-10-24 2 views
0

나는 연애 커플을 무작위로 추출 할 수있는 앱을 만들고 있습니다. 그냥 재미있는 일이야, 오케이!?!? : D 하지만이 문제는 문제가 아니지만 문제가되지는 않지만이 문제가 해결되면 훨씬 나아질 수 있습니다. 처음에는 모든 이름을 써야합니다. 그리고 그 시간이 좀 걸립니다 ... 코어 데이트를 사용해야합니까? 핵심 데이터가 무엇인지 모르기 때문에 잘 모르겠습니다. 나는 신이 나에게 와서 앱과 전화가 꺼지더라도 배열을 기억할 수있는 전체 코드를 작성하면 좋을 것이다. 내가 자바에서이 짓을 한거야, 그것은 java에있는 그 simpel입니까? 그게 좋을거야!앱이 다시 열리더라도 데이터 저장 - Swift Xcode 6 iOS

// 감사합니다, 당신은 핵심 데이터를 사용하려는 것 중공업, 복잡한 데이터 구조에 대한 안톤

+0

를 사용했다, 그러나 배열에 일부 이름 만 저장하는 경우에는 NSUserDefaults를 사용하십시오. – Ian

답변

0

, https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CoreData/Articles/cdTechnologyOverview.html#//apple_ref/doc/uid/TP40009296-SW1

하지만 그냥 배열을 저장하기 원하는대로, 당신은 NSUserDefaults에 보일 것보고. NSUserDefaults은 앱이 삭제되지 않는 한 특정 데이터를 저장합니다. 이를 위해 일종의 맞춤형 DataStorage 클래스를 만드는 것이 가장 좋습니다.

@interface DataStorage : NSObject <NSCoding> 

@property (nonatomic, strong) NSMutableArray *arrayToStore; 

+ (instancetype)sharedInstance; 
- (void)save; 

@end 

위의 파일은 .h입니다. 보시다시피, 프로토콜은 NSCoding입니다. 이를 통해 데이터를 인코딩 할 수있는 메소드에 액세스 할 수 있습니다. save 메소드를 사용하여 데이터를 디스크에 씁니다. 여기

#import "DataStorage.h" 

@implementation DataStorage 


@synthesize arrayOfPeople = _arrayToStore; 

+ (DataStorage *)sharedInstance 
{ 
    static DataStorage *state = nil; 
    if (!state) 
    { 
     NSData *data =[[NSUserDefaults standardUserDefaults] objectForKey:@"DataStorageKey"]; 

     if (data) 
     { 
      state = [NSKeyedUnarchiver unarchiveObjectWithData:data]; 
     } 
     else 
     { 
      state = [[DataStorage alloc] init]; 
     } 
    } 
    return state; 
} 

- (id)init{ 
    if (self = [super init]) { 

     if (!_arrayToStore) { 
      _arrayToStore = [[NSMutableArray alloc] init]; 
     } 

    } 
    return self; 
} 

- (instancetype)initWithCoder:(NSCoder *)decoder 
{ 
    self = [self init]; 
    if (self) { 


     if ([decoder decodeObjectForKey:@"DataStorageArrayToStore"]) { 
      _arrayToStore = [[decoder decodeObjectForKey:@"DataStorageArrayToStore"] mutableCopy]; 
     } 



    } 
    return self; 
} 

- (void)encodeWithCoder:(NSCoder *)encoder { 
    [encoder encodeObject:_arrayToStore forKey:@"DataStorageArrayToStore"]; 
} 

- (void)save 
{ 
    NSData *appStateData = [NSKeyedArchiver archivedDataWithRootObject:self]; 
    [[NSUserDefaults standardUserDefaults] setObject:appStateData forKey:@"DataStorageKey"]; 
    [[NSUserDefaults standardUserDefaults] synchronize]; 

} 


@end 

클래스의 저장된 인스턴스가있는 경우 꽤 많이 평가하여 볼 수있는하는 .m 파일입니다, 그렇지 않은 경우는 하나를 생성합니다. [DataStorage sharedInstance]이 ...

일부 데이터를 저장할

, 당신은 단순히 클래스를 사용할 수 있도록 할 것이다 당신이 데이터를 사용 핵심 많은 양의 데이터를 관리하는 경우 파일이 #import "DataStorage.m 다음은

NSString *testData = [NSString stringWithFormat: @"Test Data String"]; 
[[DataStorage sharedInstance].arrayToStore addObject: testData]; 
[DataStorage sharedInstance] save]; 
관련 문제