我正在尝试开发一个允许用户使用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.
这是关于我遇到的问题的故事板设置:

如果有人能帮我这个,我会真的很感激.
在过去的两天里,我一直试图在 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) 我正在查看一些源代码,在代码中它有一些我不完全理解的代码.下面是一个基本的伪示例,模仿我无法理解的部分:
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传递给想要数组指针的参数时,它意味着什么?我只是想加强我的知识,我一直试图搜索它,但没有找到任何信息.
我有一个数组,每个索引是另一个数组.如果我有一个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)
会产生真的.
我Matlab在C++使用Apple's 获得等效的Hilbert变换时遇到了问题Accelerate Framework.我已经能够使vDSP的FFT算法工作,并且在Paul R的帖子的帮助下,已经设法获得与Matlab相同的结果.
我已经读过两个:Jordan的这个stackoverflow问题并且已经阅读了Matlab算法(在'Algorithms'子标题下).将算法分为3个阶段:
以下是每个阶段的Matlab和C++的输出.这些示例使用以下数组:
m = [1 2 3 4 5 6 7 8];float m[] = {1,2,3,4,5,6,7,8};阶段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) 我正在尝试在 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)
一直被抛出,我不知道为什么。有人可以帮助解释为什么抛出这个异常吗?会有很大帮助吗?
首先我知道这一定很简单,我一直在尝试在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.我已经尝试了一段时间来解决它,但我很难过.如果有人能够快速告诉我修复它会非常感激.