【问题标题】:WatchOS 4: "Byte count limit reached" when accessing UserDefaultsWatchOS 4:访问 UserDefaults 时“达到字节数限制”
【发布时间】:2018-02-01 22:15:15
【问题描述】:

我在 Apple Watch 上收到以下错误

2018-01-21 19:12:46.144394+0100 nightguard[242:13146] [User Defaults] CFPrefsPlistSource<0x155ad5c0> enter code here`(Domain: group.de.my-wan.dhe.nightguard, User: kCFPreferencesCurrentUser, ByHost: No, Container: (null), Contents Need Refresh: Yes): Byte count limit reached

这个错误似乎是在执行以下代码后立即发生的:

guard let defaults = UserDefaults(suiteName: AppConstants.APP_GROUP_ID) else {
            ... // shouldn't matter
}
let value = defaults.float(forKey: "maximumBloodGlucoseDisplayed")

应用程序随后关闭。在查看 UserDefaults 类中的代码 cmets 时,苹果说应该只对 tvOS 有限制:

当用户默认值中存储的数据多于允许的数据时,NSUserDefaultsSizeLimitExceededNotification 会发布在主队列中。目前对本地用户默认设置没有限制,除了 tvOS,警告通知将以 512kB 发布,进程以 1MB 终止。对于普遍存在的默认值,限制取决于登录的 iCloud 用户。

更新到 IOS 11 后我们注意到了这个问题。所以可能是 IOS 11 引入了限制。

也许有人可以对此有所了解,或者可以告诉我这个错误的真正原因是什么。

【问题讨论】:

    标签: ios watchkit apple-watch


    【解决方案1】:

    在我的例子中,由于一个错误,我正在将一些兆字节的数据写入 UserDefaults。在 WatchOS 4 之前这不是问题,但苹果在 WatchOS 4 中似乎确实限制了这一点。

    同样的数据量使用iOS 11没有问题。错误信息只出现在WatchOS上。

    看来苹果应该更新他们的 API 文档 ;-)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-07
      • 1970-01-01
      • 2011-08-12
      • 1970-01-01
      • 2011-07-24
      • 1970-01-01
      相关资源
      最近更新 更多