React-native iOS,异步存储错误:“无效密钥 - 必须至少包含一个字符。密钥:”

时间:2017-10-27 11:34:53

标签: ios react-native asyncstorage

我想在Android和iOS中使用异步存储为我的react-native应用程序存储一个JSON对象。我将对象字符串化并使用异步存储将其存储,因为它只能存储字符串。该应用程序在Android中工作正常但在iOS中引发错误。错误如下:

Error: {
  key = "";
  message = "Invalid key - must be at least one character.  Key: ";
}

RCTMakeAndLogError
    RCTUtils.m:394
RCTErrorForKey
-[RCTAsyncLocalStorage _writeEntry:changedManifest:]
-[RCTAsyncLocalStorage multiSet:callback:]
__invoking___
-[NSInvocation invoke]
-[NSInvocation invokeWithTarget:]
-[RCTModuleMethod invokeWithBridge:module:arguments:]
facebook::react::RCTNativeModule::invokeInner(unsigned int, folly::dynamic const&&)
facebook::react::RCTNativeModule::invoke(unsigned int, folly::dynamic&&, int)::$_0::operator()() const
invocation function for block in facebook::react::RCTNativeModule::invoke(unsigned int, folly::dynamic&&, int)
_dispatch_call_block_and_release
_dispatch_client_callout
_dispatch_queue_serial_drain
_dispatch_queue_invoke
_dispatch_queue_override_invoke
_dispatch_root_queue_drain
_dispatch_worker_thread3
_pthread_wqthread
start_wqthread

我的搜索引导我使用反应原生here的Async Storage的iOS实现,但我不了解Objective-C或Swift。如果有人能帮助我,我将不胜感激。谢谢!

更新
我使用AsyncStorage将值存储在JS文件中。

1 个答案:

答案 0 :(得分:2)

在我的情况下,出现此问题是因为我使用空字符串(“”)初始化常量文件中的存储变量。
现在引用iOS implementation of AsyncStorage我们可以看到发出错误消息的函数接受NSString对象的字符串值,并且它要求字符串的长度必须大于1.作为空字符串将有一个长度0,发生此错误 所以用任何字符串初始化变量但是空字符串 感谢大家花时间查看此错误。