小编Jam*_*mie的帖子

使用Realm的RLMArray存储字符串数组

有谁知道如何使用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可以映射的结构.

objective-c realm ios

13
推荐指数
2
解决办法
2万
查看次数

有人可以解释这段代码如何使用Accelerate Framework将音量转换为分贝?

我正在使用EZAudio构建iOS应用程序.它的委托返回一个float**缓冲区,其中包含指示检测到的卷的浮点值.这个委托被不断调用,它的工作是一个不同的线程.

我想要做的是从EZAudio获取浮点值并将其转换为分贝.


EZAudioDelegate

这是我用于获取麦克风数据的简化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)

问题

问题是,从以下链接实施解决方案后,我不明白它是如何工作的.如果有人能解释它如何将音量转换为分贝,我将非常感激


代码

该解决方案使用 …

objective-c ios accelerate-framework ezaudio

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

标签 统计

ios ×2

objective-c ×2

accelerate-framework ×1

ezaudio ×1

realm ×1