小编irk*_*sor的帖子

如何在Swift中使用带有属性getter和setter的NSUserDefaults?

我试图直接从其setter和getter属性保存和检索内存中的变量,但getter导致无限循环,并且应用程序崩溃并显示错误消息:

错误:执行被中断,原因:EXC_BAD_ACCESS(代码= 2,地址= 0x10049b9a0).该过程已返回到表达式评估之前的状态.

可能是什么原因以及如何正确地做到这一点?

  class Task {

    let memory = NSUderDefaults.standardUserDefaults() 
    var taskList: [String: Double]{

    get {

        let savedList = memory.dictionaryForKey("SavedTasksList") as? [String: Double] ?? [String: Double]()

        return savedList
    }

    set (tasks){

        memory.setObject(tasks, forKey: "SavedTasksList")

    }

}
}
Run Code Online (Sandbox Code Playgroud)

nsuserdefaults swift

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

如何在每天开始时重置变量?

我有一个变量来跟踪我想在每天开始时重置的用户统计信息.我怎样才能做到这一点?由于不允许应用程序在后台运行,似乎每次应用程序处于活动状态时我都必须进行检查,但我不知道如何重置我只有一次的变量.这是我想要使用的功能:

    let beginingOfDay = NSCalendar.currentCalendar().startOfDayForDate(NSDate())
    func resetCurrentTime(){

    // Date comparision to compare current date and begining of the day.
    let dateComparisionResult:NSComparisonResult = NSDate().compare(beginingOfDay)

    if dateComparisionResult == NSComparisonResult.OrderedDescending || dateComparisionResult == NSComparisonResult.OrderedSame {
        // Current date is greater or equal to end date.
        currentTime = 0 //reset the time tracker
    }
}
Run Code Online (Sandbox Code Playgroud)

我想使用此函数来检查应用程序何时启动,但问题是应用程序可能每天多次启动.如果用户正在使用该应用程序,或者当应用程序变为活动状态或当天第一次启动时,如何在一天开始时仅重置一次变量?谢谢

nsdate nscalendar swift

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

如何在swift中更改设备大小时获取子视图的当前大小?

我必须查看:view_1和view_2.view_1高度与主视图控制器高度成正比,我以编程方式将view_2添加为view_1的子视图,其比例高度.

问题

当设备大小改变从iPhone 6到iPhone 5时,view_1正确调整但其高度我传递给绘制其子视图view_2的功能仍然是在界面构建器中设置的,因此它在iPhone 4移动时超出界限来自iPhone 6

因此,我想知道如何获得正确大小的视图,以便自动调整大小以适应当前设备?

ios view-bound swift

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

标签 统计

swift ×3

ios ×1

nscalendar ×1

nsdate ×1

nsuserdefaults ×1

view-bound ×1