标签: nsuserdefaults

如何检测 iOS 中的每日首次启动?

我们可以使用 NSUserdefaults 检测应用程序的首次启动。但是有什么方法可以检测 iOS 中的每日首次启动吗?我需要每天一次显示一个弹出窗口。

nsdate nsuserdefaults ios swift

1
推荐指数
1
解决办法
1132
查看次数

在 UnitMass 上实现 RawRepresentable

我正在尝试实现RawRepresentableMeasurement<UnitMass>UnitMass以便用@AppStorage装饰器替换以下代码:

var unitOfMeasure: UnitMass {
    get { AppSettings.defaults.string(forKey: "unitOfMeasure").flatMap { UnitMass.fromSymbol(rawValue: $0) }! }
    set { AppSettings.defaults.set(newValue.symbol, forKey: "unitOfMeasure") }
}

var weightOverwrite: Measurement<UnitMass> {
    get { .init(value: AppSettings.defaults.double(forKey: "weightOverwrite"), unit: unitOfMeasure) }
    set { AppSettings.defaults.set(newValue.value, forKey: "weightOverwrite") }
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?我使用 JSONEncoder/JSONDecoder 实现了它:

extension Measurement: RawRepresentable {
    public init?(rawValue: String) {
        guard let data = rawValue.data(using: .utf8),
            let result = try? JSONDecoder().decode(Measurement.self, from: data)
        else {
            return nil
        }
        self = result …
Run Code Online (Sandbox Code Playgroud)

decorator nsuserdefaults swift

1
推荐指数
1
解决办法
301
查看次数

为什么我无法使用NSUserDefaults保存对应用程序设置的更改?

我使用以下代码从设置视图中保存值,该视图从UITextField获取值并使用NSUserDefaults存储它们.下面的代码甚至调用同步,但它没有保存更改.我在这做错了什么?

- (IBAction)save {
    NSLog(@"save");

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    if (self.usernameTextField.text != nil) {
        NSLog(@"username: %@", self.usernameTextField.text);
        [defaults setObject:kTwitterUsernameKey forKey:self.usernameTextField.text];
    }
    if (self.passwordTextField.text != nil) {
        NSLog(@"password: %@", self.passwordTextField.text);
        [defaults setObject:kTwitterPasswordKey forKey:self.passwordTextField.text];
    }

    [defaults synchronize];

    [self dismissModalViewControllerAnimated:TRUE];
}
Run Code Online (Sandbox Code Playgroud)

iphone objective-c nsuserdefaults

0
推荐指数
1
解决办法
646
查看次数

为什么会崩溃?

我上了课.这是h文件.

//  MyClass.h
#import <Foundation/Foundation.h>


@interface MyClass : NSObject <NSCoding> {
    NSString *string1;
    NSString *string2;

}
@property (nonatomic, retain) NSString *string1;
@property (nonatomic, retain) NSString *string2;

@end
Run Code Online (Sandbox Code Playgroud)

这是m文件.

//  MyClass.m
#import "MyClass.h"


@implementation MyClass
@synthesize string1, string2;

- (void)encodeWithCoder:(NSCoder *)coder;
{
    if (self = [super init]){
        [coder encodeObject:string1 forKey:@"string1"];
        [coder encodeObject:string2 forKey:@"string2"]; 
    }

}

- (id)initWithCoder:(NSCoder *)coder;
{
    self = [[MyClass alloc] init];
    if (self != nil)
    {
        string1 = [coder decodeObjectForKey:@"string1"];
        string2 = [coder decodeObjectForKey:@"string2"];

    }   
    return self;
} …
Run Code Online (Sandbox Code Playgroud)

crash cocoa-touch objective-c nsuserdefaults nsmutablearray

0
推荐指数
1
解决办法
374
查看次数

检查NSUserDefault字符串中的nil

我知道这似乎应该这么简单......

我从NSUserDefaults中提取字符串值:

 NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
 NSString *strFirstName = [userDefaults stringForKey:kFirstPersonName];
Run Code Online (Sandbox Code Playgroud)

这给了我"指针和整数之间的比较"错误:

 if (!strFirstName == nil) {    
      self.firstPersonName.text = strFirstName;
 }
Run Code Online (Sandbox Code Playgroud)

我要做的是从用户默认值中提取一个值.如果没有,请不要使用它.如果它有一个字符串值,请使用它.

任何帮助表示赞赏!LQ

null xcode nsuserdefaults

0
推荐指数
1
解决办法
3893
查看次数

覆盖NSUserDefaults中保存的值

我有这个方法来保存一个名为myWallet的可变数组,该数组包含Class Card的实例.

- (void)saveMyWallet
{

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    [defaults setObject:[NSKeyedArchiver archivedDataWithRootObject:self.myWallet] forKey:@"myWalletArray"];

    [defaults synchronize];
}
Run Code Online (Sandbox Code Playgroud)

我有的卡类有三个实例变量:名称,引脚和点.到目前为止,在UserDefaults中保存卡的新实例是可以的.我只是想知道我如何能覆盖点的值,因为正如我在点的计算进行,我想更新它的一些建议.

这是我的卡类

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
Run Code Online (Sandbox Code Playgroud)

Card.m

#import "Card.h"

@implementation Card 

@synthesize name = _name;
@synthesize pin = _pin;
@synthesize points = _points;
@synthesize …
Run Code Online (Sandbox Code Playgroud)

iphone xcode nsuserdefaults ios

0
推荐指数
1
解决办法
976
查看次数

如何在NSUserDefaults中保存NSInteger

我试图将NSInteger(标签)保存到NSUserDefaults但我还没有找到一种方法来做到这一点甚至可能

保存数据

[[NSUserDefaults standardUserDefaults] setInteger:label forKey:@"key1"];
Run Code Online (Sandbox Code Playgroud)

检索数据

- (void)viewDidLoad {
label = [[NSUserDefaults standardUserDefaults] integerForKey:@"key1"];
[super viewDidLoad];
Run Code Online (Sandbox Code Playgroud)

objective-c nsuserdefaults nsinteger

0
推荐指数
1
解决办法
4686
查看次数

如何使用NSUserDefaults动态分配空间?

我之前使用过NSUserDefaults,为我的应用程序的设置部分存储了一些变量.

但是现在我正在制作一个食谱应用程序,用户可以在其中键入自己的食谱并保存它们.每个食谱都有一个标题描述日期等.所以我想我需要一个数组来保存每个食谱.但是,我将如何动态添加每个新配方?

我的意思是我会开始将配方保存在阵列的下一个位置?如果用户删除一个食谱并且数组中有一个空位,会发生什么?

我的逻辑在保存数据方面是正确的吗?你会怎么做?

nsuserdefaults nsarray ios

0
推荐指数
1
解决办法
119
查看次数

如何在swift 3中取消归档数据?

我有一个应用程序,其中我保存的阵列CNContact,以UserDefaults作为这样的:

var contactsArray = [CNContact]()
let defaults = UserDefaults()
func (contact: CNContact){
    contactsArray.append(contact)
    let contactArrayArchive = NSKeyedArchiver.archivedData(withRootObject: contactArray) //archive the data
    defaults.set(contactArrayArchive, forKey: "contactArray")
    defaults.synchronize()
}
Run Code Online (Sandbox Code Playgroud)

这会归档数据以允许将其保存到defaults.我的问题是我怎么能这样的数据转换回阵列CNContactviewDidLoad.我在网上看到很多答案,建议使用NSKeyedArchiver.unarchiveObjectwithData但是在Xcode中键入这个,swift 3,表示它.unarchiveObjectwithData不是.的成员NSKeyedArchiver.我一直在寻找有关如何在swift 3中执行此操作的内容,但一直未成功.我怎样才能解除价值?

nsuserdefaults swift

0
推荐指数
1
解决办法
771
查看次数

我必须使用标准的共享UserDefaults对象吗?

按照惯例,在处理时UserDefaults,我们使用standard它的对象。但是,使用标准UserDefaults应该设置/获取可从新实例访问的值,反之亦然。澄清:

let object = UserDefaults()
object.set(101, forKey: "number1") // setting via a new object
UserDefaults.standard.integer(forKey: "number1") // getting via standard
// 101

UserDefaults.standard.set(102, forKey: "number2") // setting via standard
object.value(forKey: "number2") // getting via the new object
// 102
Run Code Online (Sandbox Code Playgroud)

我会假设它standard不以“语法糖”形式存在,仅为此目的创建单例类似乎并不明智。

所以:

  • 使用standard代替有好处UserDefaults()吗?如果有,那是什么?可能与套房有关吗?
  • 如果背后有什么东西,我们为什么还能申报UserDefaults()呢?

nsuserdefaults ios userdefaults

0
推荐指数
1
解决办法
67
查看次数