我现在遇到了几个案例,它们可以方便地找到"最顶层"的视图控制器(负责当前视图的控制器),但还没有找到办法.
基本上挑战是这样的:假设一个人在一个不是视图控制器(或视图)的类中执行[并且没有活动视图的地址]并且还没有传递最顶层视图控制器的地址(或者说,导航控制器的地址),是否可以找到该视图控制器?(如果是这样,怎么样?)
或者,如果失败了,是否有可能找到最顶层的视图?
似乎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) 在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) 我想知道单个设备上的单个Flurry会话的数据需要多长时间才能显示在Flurry网站上.应该是瞬间,几分钟,几个小时,一夜之间?
我现在要从服务器下面的日期,我想将字符串转换为日期.
2011年6月8日星期三,美国东部时间晚上11:58
但我不能成功请给我建议.谢谢
我在我的应用程序中使用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) 我使用以下内容从NSDate获取周数:
[[calendar components: NSWeekCalendarUnit fromDate:date] week]
Run Code Online (Sandbox Code Playgroud)
不幸的是,我在不同的iOS版本中获得了不同的值.iOS 4.*和5返回的值相差1.有没有办法一致地检索周数?
我需要进行一些测试,包括将"电话"向前和向后移动几天.我想在模拟器上这样做.是否有任何可用的hack允许更改模拟器上显示的日期,而无需更改Mac日期?
只是尝试将一些代码从一个工作项目拼接到另一个工作项目."from"项目使用"属性路由",您可以[Route(…)]在Web API控制器模块中嵌入指令,以指示HTTP消息应路由到哪个服务例程.
在"from"项目中正常工作,但在"to"项目中,我得到构建错误"找不到类型或命名空间名称'Route'(您是否缺少using指令或程序集引用?)"
我已经尝试将using"from"项目中的所有语句复制到"to"项目,但这没有明显的效果.没有MS文档表明需要NuGet包(甚至是using声明).这两个项目都应该是ASP.NET MVC 4.
(是的,我用config.MapHttpAttributeRoutes();声明更新了WebApiConfig.cs .)
有任何想法吗??
在我看来,漂亮的打印JSON是一个简单的任务,JavaScript应该能够处理它.有没有人编写(或运行)JavaScript函数来执行此操作?
iphone ×4
ios ×3
ios5 ×3
objective-c ×3
asp.net ×1
c# ×1
flurry ×1
ios4 ×1
ios7 ×1
javascript ×1
json ×1
locale ×1
pretty-print ×1
simulator ×1
uikit ×1
uiview ×1
url-routing ×1
xcode4 ×1
xcode4.2 ×1