WatchOS 4:访问UserDefaults时“达到字节数限制”

时间:2018-01-21 18:24:12

标签: ios watchkit 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类中的代码注释时,apple说只应对tvOS进行限制:

  

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

我们在更新到IOS 11后发现了这个问题。因此,IOS 11可能已经引入了这个限制。

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

1 个答案:

答案 0 :(得分:0)

在我的情况下,由于一个错误,我在UserDefaults中写了几兆字节的数据。这在WatchOS 4之前不是问题,但似乎苹果在WatchOS 4中限制了这一点。

使用iOS 11时,相同的数据量没有问题。仅在WatchOS上出现错误消息。

所以苹果似乎应该更新他们的API文档; - )