小编Hot*_*cks的帖子

iPhone - 如何找到最顶层的视图控制器

我现在遇到了几个案例,它们可以方便地找到"最顶层"的视图控制器(负责当前视图的控制器),但还没有找到办法.

基本上挑战是这样的:假设一个人在一个不是视图控制器(或视图)的类中执行[并且没有活动视图的地址]并且还没有传递最顶层视图控制器的地址(或者说,导航控制器的地址),是否可以找到该视图控制器?(如果是这样,怎么样?)

或者,如果失败了,是否有可能找到最顶层的视图?

objective-c uiviewcontroller uikit uiview ios

240
推荐指数
17
解决办法
18万
查看次数

处理NSDateFormatter语言环境"feechur"的最佳方法是什么?

似乎NSDateFormatter有一个"功能"意外地咬你:如果你做一个简单的"固定"格式操作,如:

NSDateFormatter* fmt = [[NSDateFormatter alloc] init];
[fmt setDateFormat:@"yyyyMMddHHmmss"];
NSString* dateStr = [fmt stringFromDate:someDate];
[fmt release];
Run Code Online (Sandbox Code Playgroud)

然后它在美国和大多数区域设置工作正常UNTIL ...将手机设置为24小时区域的人将设置中的12/24小时开关设置为12.然后上面开始将"AM"或"PM"添加到结果字符串的结尾.

(参见,例如,NSDateFormatter,我做错了什么或者这是一个错误?)

(请参阅https://developer.apple.com/library/content/qa/qa1480/_index.html)

显然苹果公司宣称这是"不好" - 破碎如设计,他们不会解决它.

规避显然是为特定区域(通常是美国)设置日期格式化程序的区域设置,但这有点乱:

NSLocale *loc = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[df setLocale: loc];
[loc release];
Run Code Online (Sandbox Code Playgroud)

在onsies-twosies中并没有太糟糕,但我正在处理大约十个不同的应用程序,而我看到的第一个应用程序有43个这种情况的实例.

因此,对于宏/重写类/任何最小化改变所有内容的努力的任何聪明的想法,而不使代码模糊?(我的第一直觉是使用在init方法中设置语言环境的版本来覆盖NSDateFormatter.需要更改两行 - alloc/init行和添加的导入.)

添加

这是我到目前为止所提出的 - 似乎适用于所有场景:

@implementation BNSDateFormatter

-(id)init {
static NSLocale* en_US_POSIX = nil;
NSDateFormatter* me = [super init];
if (en_US_POSIX == nil) {
    en_US_POSIX = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
}
[me setLocale:en_US_POSIX];
return me;
}

@end …
Run Code Online (Sandbox Code Playgroud)

iphone locale objective-c nsdateformatter ios

164
推荐指数
3
解决办法
4万
查看次数

在Xcode 4.2/iOS 5下的控制台中没有异常堆栈跟踪?

在Xcode 3.x和iOS 4下,如果在模拟器中发出未处理的异常信号,则在控制台输出中会产生异常堆栈跟踪(类似于Java).

当我在Xcode 4.2下的iOS 5中引发未处理的异常时,运行完全相同的应用程序代码,不会发生堆栈跟踪.(我确实弄清楚如何设置异常断点,但这不会在控制台中产生回溯.)

这仅仅是我需要在某处创建的Xcode设置,还是Xcode 4/iOS 5的"功能"?有没有办法恢复这一点功能?

更新

不幸的是,添加一个uncaughtExceptionHandler不起作用.这是处理程序:

void uncaughtExceptionHandler(NSException *exception) {
    NSLog(@"uncaughtExceptionHnadler -- Exception %@", [exception description]);
    // Because iOS 5 doesn't provide a traceback, provide one here
    NSLog(@"Stack trace: %@", [exception callStackSymbols]);
    // Let Flurry look at the error
    [FlurryAPI logError:@"Uncaught" message:@"Crash!" exception:exception];
}                                               
Run Code Online (Sandbox Code Playgroud)

(事实证明它已经存在,做Flurry的事情,所以我只是添加了堆栈跟踪.)

这是它启用的地方(只在声明处理程序的下面几行):

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    // Enable uncaught exception handler to dump stack and let Flurry log the exception
    NSUncaughtExceptionHandler* hdlr = NSGetUncaughtExceptionHandler();
    NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler);
    NSUncaughtExceptionHandler* newHdlr …
Run Code Online (Sandbox Code Playgroud)

ios5 xcode4.2

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

Flurry应用程序的会话数据需要多长时间才能显示在Flurry网站上

我想知道单个设备上的单个Flurry会话的数据需要多长时间才能显示在Flurry网站上.应该是瞬间,几分钟,几个小时,一夜之间?

iphone flurry

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

如何在iphone中将字符串转换为NSDate?

我现在要从服务器下面的日期,我想将字符串转换为日期.

2011年6月8日星期三,美国东部时间晚上11:58

但我不能成功请给我建议.谢谢

iphone

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

AVSpeechSynthesizer发音音频文件

我在我的应用程序中使用AVSpeechSynthesizer,我希望将语音文本保存到音频文件或AVAsset.我浏览了Apple的文档并没有看到任何内容,但我发现了一个问题以确定.以下是我目前的代码.

AVSpeechUtterance * utterance = [AVSpeechUtterance speechUtteranceWithString:textView.text];
float rate = [speedSlider value]/1.5;
utterance.rate =  rate;
[speechSynthesizer speakUtterance:utterance];
Run Code Online (Sandbox Code Playgroud)

ios ios7 avspeechsynthesizer

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

如何在所有iOS版本中始终如一地获得NSDate的周数?

我使用以下内容从NSDate获取周数:

[[calendar components: NSWeekCalendarUnit fromDate:date] week]
Run Code Online (Sandbox Code Playgroud)

不幸的是,我在不同的iOS版本中获得了不同的值.iOS 4.*和5返回的值相差1.有没有办法一致地检索周数?

iphone objective-c ios4 ios5

17
推荐指数
3
解决办法
9848
查看次数

是否有任何方法可以更改iOS模拟器上显示的日期/时间(除了更改Mac设置)?

我需要进行一些测试,包括将"电话"向前和向后移动几天.我想在模拟器上这样做.是否有任何可用的hack允许更改模拟器上显示的日期,而无需更改Mac日期?

simulator xcode4 ios5

15
推荐指数
3
解决办法
7897
查看次数

"无法使用"属性路由"找到类型或命名空间名称'Route'

只是尝试将一些代码从一个工作项目拼接到另一个工作项目."from"项目使用"属性路由",您可以[Route(…)]在Web API控制器模块中嵌入指令,以指示HTTP消息应路由到哪个服务例程.

在"from"项目中正常工作,但在"to"项目中,我得到构建错误"找不到类型或命名空间名称'Route'(您是否缺少using指令或程序集引用?)"

我已经尝试将using"from"项目中的所有语句复制到"to"项目,但这没有明显的效果.没有MS文档表明需要NuGet包(甚至是using声明).这两个项目都应该是ASP.NET MVC 4.

(是的,我用config.MapHttpAttributeRoutes();声明更新了WebApiConfig.cs .)

有任何想法吗??

c# asp.net url-routing asp.net-mvc-4 asp.net-web-api

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

有没有办法在使用JavaScript的网页中打印JSON?

在我看来,漂亮的打印JSON是一个简单的任务,JavaScript应该能够处理它.有没有人编写(或运行)JavaScript函数来执行此操作?

javascript json pretty-print

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