0
我想簡單地在我的核心數據堆棧中切換BOOL屬性,並使用該coredata布爾在我的mainView中設置viewDidLoad中的UISwitch的「狀態」。布爾值不會存儲在覈心數據棧
以下情形: 開關關閉時,用戶點擊編輯(保存)的UIButton, - >是切換實體從@NO設置爲@YES 下一次應用程序啓動,在viewDidLoad中的settingSysTimeOverride屬性,我取芯數據堆棧並查看settingSysTimeOverride的狀態並使用它來設置我的UISwitch的「狀態」。
但由於某種原因,我的價值不會被存儲到核心數據堆棧。 整個項目都附上了,這裏也是我的代碼。
MainViewController.m
#import "MainViewController.h"
#import "AppDelegate.h"
@interface MainViewController()
@property (nonatomic, strong)NSManagedObjectContext *managedObjectContext;
@property (nonatomic, strong)NSFetchedResultsController *fetchedResultsController;
@property (strong, nonatomic) NSMutableArray *settingsArray;
@end
@implementation MainViewController
@synthesize editSetting;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (NSManagedObjectContext *)managedObjectContext
{
return [(AppDelegate*)[[UIApplication sharedApplication]delegate]managedObjectContext];
}
- (void)viewDidLoad
{
[super viewDidLoad];
NSManagedObjectContext *context = [self managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Setting" inManagedObjectContext:context];
[fetchRequest setEntity:entity];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"settingSysTimeOverride == %@", editSetting];
[fetchRequest setPredicate:predicate];
NSError *error;
NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];
if (fetchedObjects == nil) {
NSLog(@"ERROR! %@ - %@", [error localizedDescription], [error userInfo]);
} else {
NSLog(@"FETCH SUCCESSFUL");
}
if ((fetchedObjects.count) >0) {
// list array contents
for (int i=0; i < (fetchedObjects.count); i++) {
// output for debug purpose
NSLog(@"Array-index [%i]: %@", i, fetchedObjects[i]);
}
}
// check settingSysTimeOverride and set UISwitch-State
if (editSetting.settingSysTimeOverride.boolValue == 0) {
// turn switch to OFF - Position
_overrideSysTimeSwitch.on = NO;
} else {
// turn switch to ON - Position
_overrideSysTimeSwitch.on = YES;
}
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)editSave:(UIBarButtonItem *)sender
{
// toggle BOOL status of settingSysTimeOverride here
//
}
- (IBAction)overrideSysTime:(UISwitch *)sender
{
}
- (IBAction)timeFormat:(UISwitch *)sender {
}
@end
MainViewController.h
#import <UIKit/UIKit.h>
#import "Setting.h"
@interface MainViewController : UIViewController <NSFetchedResultsControllerDelegate>
@property (nonatomic, strong)Setting *editSetting;
@property (strong, nonatomic) IBOutlet UIBarButtonItem *editSaveButton
@property (strong, nonatomic) IBOutlet UILabel *overrideSysTimeLabel;
@property (strong, nonatomic) IBOutlet UILabel *timeFormatLabel;
@property (strong, nonatomic) IBOutlet UISwitch *overrideSysTimeSwitch;
@property (strong, nonatomic) IBOutlet UISwitch *timeFormatSwitch;
- (IBAction)editSave:(UIBarButtonItem *)sender;
- (IBAction)overrideSysTime:(UISwitch *)sender;
- (IBAction)timeFormat:(UISwitch *)sender;
@end
AppDelegate.h
#import <UIKit/UIKit.h>
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;
@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;
- (void)saveContext;
- (NSURL *)applicationDocumentsDirectory;
@end
Setting.h
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
@interface Setting : NSManagedObject
@property (nonatomic, retain) NSString * settingName;
@property (nonatomic, retain) NSNumber * settingSysTimeOverride;
@property (nonatomic, retain) NSNumber * settingTimeFormat;
@end
Setting.m
#import "Setting.h"
@implementation Setting
@dynamic settingName;
@dynamic settingSysTimeOverride;
@dynamic settingTimeFormat;
@end
是否有人可以幫我這個???