小编Joh*_*ale的帖子

Xcode Objective-C Segue"正在进行演示"

我正在尝试开发一个允许用户使用AFNetworking登录的应用程序.我正确设置了数据库,除非用户首次登录,否则一切似乎都正常.

我所拥有的是非常简单的:

[[API sharedInstance] commandWithParams:params
                               onCompletion:^(NSDictionary *json) {
                                   //result returned

                                   NSDictionary* res = [[json objectForKey:@"result"] objectAtIndex:0];

                                   if ([json objectForKey:@"error"]==nil && [[res objectForKey:@"UserID"] intValue]>0) {
                                       [[API sharedInstance] setUser: res];
                                       [self performSegueWithIdentifier:@"Login" sender:self];
                                   } else {
                                       //error
                                       [UIAlertView title:@"Error" withMessage:[json objectForKey:@"error"]];
                                   }

                               }];
Run Code Online (Sandbox Code Playgroud)

基本上,上面的代码返回用户登录详细信息的结果,仅在登录详细信息匹配时才成功.如您所见,我清楚地将用户设置在整个应用程序中使用的sharedInstance中.设置用户后,我尝试执行segue,因为这是登录按钮应该执行的操作.

segue确实发生了,程序正在运行,但有两个问题我无法解决,而且我花了好几个小时试图修复它.首先,我在Xcode的输出窗口中收到消息:

警告:在演示文稿正在进行时尝试在LoginVC上显示UITabBarController!

其次,为了测试用户设置是否正确,在"配置文件"屏幕上(第一个屏幕被屏蔽)有一个标签,其文本设置为:

NSString stringWithFormat:@"Welcome %@",[[[API sharedInstance] user] objectForKey:@"username"]];
Run Code Online (Sandbox Code Playgroud)

并且如果用户名实际出现或者说(null)如图所示:

在此输入图像描述

您还可以看到我在那里制作的按钮,以便在输出窗口中打印用户的值.即使消息是"欢迎(null)"并按下按钮,所有值都正确,所以我不确定为什么字符串有时会为null.

这是关于我遇到的问题的故事板设置:

在此输入图像描述

如果有人能帮我这个,我会真的很感激.

iphone xcode ios afnetworking segue

8
推荐指数
1
解决办法
4174
查看次数

有符号的 16 位 PCM 转换不起作用。为什么?

在过去的两天里,我一直试图在 Android 上操作 16 位 PCM 数据,但收效甚微。我目前正在使用WAV 录音机来捕捉音频。在onPeriodicNotification(AudioRecord recorder)写入缓冲区之前的方法中,randomAccessWriter我将缓冲区发送到自定义类,以操作样本,并将样本保存回缓冲区。我的自定义类中的方法如下:

由于缓冲区是一个字节数组,我首先将它们转换为 shorts,现在一个 short 表示一帧(只有一个通道)。我将实施 FFT 算法,一旦我克服了这个障碍,需要输入是一个浮点数组 - 所以我将每个空头转换为一个浮点数。现在,randomAccessWriter将数据写入 WAV 文件的 接受一个字节数组并期望每帧为 2 个字节。因此,我将每个浮点数转换回 short 并使用 ByteBuffer 重建一个字节数组,然后返回该数组。当我运行我的记录器应用程序时,通过上面的代码发送缓冲区,一切都很好。

我尝试使用一个简单的语音调制算法来测试录音是否被修改,该算法放置在 TODO 注释所在的位置:

现在,如果我在 iPhone 上使用上述代码,音频样本将被转换,尽管数据本身是 32 位浮点数。但是,在 Android 上,当我重新运行记录器应用程序并插入上述代码时,产生的只是白噪声。在我可以使用上述代码成功修改样本之前,我无法继续使用我的 FFT 算法。

为什么会出现这种情况?如果有关于该主题的知识的人可以阐明该主题,我将不胜感激。

已解决 - 比约恩·罗奇 (Bjorn Roche)

根本原因:录制以小端格式提供数据,而 Java 短片以大端格式提供;当应用使用两种不同形式的函数时,会产生白噪声。下面的代码显示了如何接收小端字节数组,转换为大端浮点数组并返回小端字节数组。虽然浮动你可以做任何你想做的事情,我现在将使用我的 FFT 算法:

public byte[] manipulateSamples(byte[] data,
                                int samplingRate,
                                int numFrames,
                                short numChannels) {

    // Convert byte[] to short[] (16 bit) to float[] (32 bit) (End …
Run Code Online (Sandbox Code Playgroud)

java audio android pcm

4
推荐指数
1
解决办法
2874
查看次数

Array + int作为一个参数做什么?

我正在查看一些源代码,在代码中它有一些我不完全理解的代码.下面是一个基本的伪示例,模仿我无法理解的部分:

    float *myArray;

    object(){
        myArray = new float[20];
    }

    ~object(){   
    }

    void reset(){
        delete [] myArray;
    }

    void myMethod(float *array){
        for (int i = 0; i < 20; i++){
            array[i] = 0.5f;
        }
    }
Run Code Online (Sandbox Code Playgroud)

现在在另一个方法体中有:

    void mySecondMethod(){
        myMethod(myArray + 10);
    }
Run Code Online (Sandbox Code Playgroud)

这是我没有得到的第二种方法:当你将数组指针和int传递给想要数组指针的参数时,它意味着什么?我只是想加强我的知识,我一直试图搜索它,但没有找到任何信息.

c++ arrays

4
推荐指数
2
解决办法
108
查看次数

如何查找int是否在数组数组中?

我有一个数组,每个索引是另一个数组.如果我有一个int,我怎么能编写代码来检查int是否存在于python中数组中每个数组元素的前2个指标内.

例如:3英寸

array = [[1,2,3], [4,5,6]] 
Run Code Online (Sandbox Code Playgroud)

会产生假.

3英寸

array = [[1,3,7], [4,5,6]] 
Run Code Online (Sandbox Code Playgroud)

会产生真的.

python arrays boolean

2
推荐指数
1
解决办法
97
查看次数

使用Apple的加速框架的希尔伯特变换(分析信号)?

MatlabC++使用Apple's 获得等效的Hilbert变换时遇到了问题Accelerate Framework.我已经能够使vDSP的FFT算法工作,并且在Paul R的帖子的帮助下,已经设法获得与Matlab相同的结果.

我已经读过两个:Jordan的这个stackoverflow问题并且已经阅读了Matlab算法(在'Algorithms'子标题下).将算法分为3个阶段:

  1. 前进输入的FFT.
  2. DC和Nyquist之间的零反射频率和双频率.
  3. 对修改后的正向FFT输出进行逆FFT.

以下是每个阶段的Matlab和C++的输出.这些示例使用以下数组:

  • Matlab的: m = [1 2 3 4 5 6 7 8];
  • C++: float m[] = {1,2,3,4,5,6,7,8};

Matlab示例


阶段1:

  36.0000 + 0.0000i
  -4.0000 + 9.6569i
  -4.0000 + 4.0000i
  -4.0000 + 1.6569i
  -4.0000 + 0.0000i
  -4.0000 - 1.6569i
  -4.0000 - 4.0000i
  -4.0000 - 9.6569i
Run Code Online (Sandbox Code Playgroud)

第二阶段:

  36.0000 + 0.0000i
  -8.0000 + 19.3137i
  -8.0000 + 8.0000i
  -8.0000 + 3.3137i
  -4.0000 + …
Run Code Online (Sandbox Code Playgroud)

c++ fft ios accelerate-framework

2
推荐指数
1
解决办法
2375
查看次数

将字节 [] 转换为浮点 []

我正在尝试在 Android 中将 float[] 转换为 byte[]。我在stackoverflow上查看了其他问题和答案,但没有一个帮助,所以我决定实施我自己的解决方案。我试过的方法是:

byte[] data = some data;
ByteBuffer buffer = ByteBuffer.allocate(data.length);
buffer.put(data);
FloatBuffer fBuffer = buffer.asFloatBuffer();
float[] dataConverted = fBuffer.array();
Run Code Online (Sandbox Code Playgroud)

但是,例外:

java.lang.UnsupportedOperationException
    at java.nio.ByteBufferAsFloatBuffer.protectedArray(ByteBufferAsFloatBuffer.java:128)
    at java.nio.FloatBuffer.array(FloatBuffer.java:101)
Run Code Online (Sandbox Code Playgroud)

从行:

    float[] dataConverted = fBuffer.array();
Run Code Online (Sandbox Code Playgroud)

一直被抛出,我不知道为什么。有人可以帮助解释为什么抛出这个异常吗?会有很大帮助吗?

android floatbuffer

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

如何使用'this'作为另一个对象的参数?

首先我知道这一定很简单,我一直在尝试在Stackoverflow.com和Google上阅读类似的问题,但我仍然无法让我的程序运行.

我很快写了一篇关于我的程序试图做的摘要:

    public class One{

    public One(){
        Two t = new Two(this);
    }

    public void doSomething(){
        sout("HERE");
    }

    public static void main(String[] args){
        One o = new One()
        Two t = new Two(o);
    }

}

    public class Two{

        public Two(One o){
            One o = o;
            o.doSomething();
        }
    }
Run Code Online (Sandbox Code Playgroud)

当我运行程序时,我从方法调用o.doSomething()得到一个NullPointerException.我已经尝试了一段时间来解决它,但我很难过.如果有人能够快速告诉我修复它会非常感激.

java reference this parameter-passing

-1
推荐指数
1
解决办法
94
查看次数