我正在尝试使用打开托管文档 openWithCompletionHandler:
我遇到的问题是它在模拟器上工作正常,但是当我在iPhone 4上测试它时,完成处理程序永远不会完成.代码如下所示:
[theManagedDocument openWithCompletionHandler:^(BOOL success){
if(success) [self documentIsReady];
if(!success) NSLog(@"Couldn't Open Document");
}];
Run Code Online (Sandbox Code Playgroud)
这在模拟器上工作正常,我接到documentIsReady电话(如果错误,则"无法打开文档").但是在iPhone 4上它永远不会运行CompletionHandler块.我已经在整个块中放置了断点(在两个if语句之前和之后)并且没有任何东西被调用.控制台上没有"无法打开文档",没有调用documentIsReady.
我还必须提一下,这似乎是我第一次在iPhone上运行应用程序,它将正常工作.我也将它封装在带有fileExistsAtPath:调用的if语句中.它正在进入if语句并且调用了openWithCompletionHandler:,但是完成块永远不会被触发.
我使用的是iOS 5.1和Xcode 4.3.2.
我想比较两个整数.一个是rowa NSIndexPath,另一个是counta NSArray.该row等于0,count等于2.我让他们在if声明如下:
if([self.selectedSetpoint row] < ([self.theCategories count]-3))
{
//Do true stuff
}
Run Code Online (Sandbox Code Playgroud)
所以根据我的数学,这个if陈述应该是假的,因为我在比较0 < -1.但是,我一直认为这句话是正确的,并且if正在运行中的块.我试过NSLog这些值,以确保我不只是得到错误的值.我在if声明之前把它放在了正确的位置:
NSLog(@"%d",[self.selectedSetpoint row]);
NSLog(@"%d",[self.theCategories count]-3);
NSLog(@"%@",[self.selectedSetpoint row] < ([self.theCategories count]-3)?@"Yes":@"No");
Run Code Online (Sandbox Code Playgroud)
并在控制台上得到这个:
2012-07-17 08:58:46.061 App[61345:11603] 0
2012-07-17 08:58:46.061 App[61345:11603] -1
2012-07-17 08:58:46.062 App[61345:11603] Yes
Run Code Online (Sandbox Code Playgroud)
有什么想法为什么这个比较是真的?我是否误解了比较整数的问题?
我在这个比较上面的另一个if语句
[self.selectedSetpoint row]<([self.theCategories count]-2)
Run Code Online (Sandbox Code Playgroud)
哪个是0 < 0,它工作正常(返回NO).所以我觉得使用负整数存在一些问题,我没有得到.
先感谢您.