有谁知道如何使用Realm存储字符串数组?我正在尝试将以下响应映射到Realm中:
"zoneInfo": {
"tariffInfoLines": [
"In this city you pay per minute."
]
}
Run Code Online (Sandbox Code Playgroud)
我们有一个包含tariffInfoLines数组的zoneInfo对象.此tariffInfoLines数组包含字符串.在Realm中,有两种不同的变量类型用于存储数据.第一个是RLMObject,它允许你的标准NSString,int,long等.
第二种类型是RLMArray,用于数组(不支持NSArray).您必须为数组提供一个类型,该类型必须是RLMObject的子类.到目前为止,我们通过使用ABCRealmString对象解决了这个问题,如下所示:
@property RLMArray<ABCRealmString> *tariffInfoLines;
Run Code Online (Sandbox Code Playgroud)
ABCRealmString包含一个NSString属性(它基本上是一个包装器):
@property NSString *value;
Run Code Online (Sandbox Code Playgroud)
然而,这意味着当Realm尝试映射响应以持久化数据时,它正在寻找键"值"(属性的名称)的值.它似乎期望响应类似于以下内容:
"zoneInfo": {
"tariffInfoLines": [
{
"value": "In this city you pay per minute."
},
]
}
Run Code Online (Sandbox Code Playgroud)
在项目中,我们让它适用于以下结构:
"userOptions": [
{
"wantsEmailNotifications": true,
"wantsPushNotifications": false
},
]
Run Code Online (Sandbox Code Playgroud)
这有一个数组,其中的对象具有Realm可以映射到的清晰键值对.zoneInfo结构似乎是我们拥有一个包含值集的数组的唯一位置,而不是它们在对象内或具有任何键.
如果有人可以对此有所了解,关于是否可以使用Realm,或者是否需要API更改来匹配Realm可以映射的结构.
我正在使用EZAudio构建iOS应用程序.它的委托返回一个float**缓冲区,其中包含指示检测到的卷的浮点值.这个委托被不断调用,它的工作是一个不同的线程.
我想要做的是从EZAudio获取浮点值并将其转换为分贝.
这是我用于获取麦克风数据的简化EZAudio代表:
- (void)microphone:(EZMicrophone *)microphone hasAudioReceived:(float **)buffer withBufferSize:(UInt32)bufferSize withNumberOfChannels:(UInt32)numberOfChannels {
/*
* Returns a float array called buffer that contains the stereo signal data
* buffer[0] is the left audio channel
* buffer[1] is the right audio channel
*/
// Using a separate audio thread to not block the main UI thread
dispatch_async(dispatch_get_main_queue(), ^{
float decibels = [self getDecibelsFromVolume:buffer withBufferSize:bufferSize];
NSLog(@"Decibels: %f", decibels);
});
}
Run Code Online (Sandbox Code Playgroud)
问题是,从以下链接实施解决方案后,我不明白它是如何工作的.如果有人能解释它如何将音量转换为分贝,我将非常感激
该解决方案使用 …