如果应用需要访问Motion Activity数据,则会在安装时询问用户.但是,如果用户意外回答"否",则该应用程序将无法运行.
我正在寻找一种方法来检查运动活动是否已启用,以便我可以提示用户启用,如果没有.
有人可以指出我正确的方向代码吗?
根据Doc(谢谢)提供的信息,似乎Apple没有提供直接的方法来检查Motion Activity隐私状态.通过了解错误,我能够找到答案: -
[stepCounter queryStepCountStartingFrom:[NSDate date]
to:[NSDate date]
toQueue:[NSOperationQueue mainQueue]
withHandler:^(NSInteger numberOfSteps, NSError *error) {
if (error != nil && error.code == CMErrorMotionActivityNotAuthorized) {
// The app isn't authorized to use motion activity support.
}
Run Code Online (Sandbox Code Playgroud) 我想检查用户是否在iOS设备上启用了iCloud Keychain,以便在没有这样的情况下提示他们,以便他们可以将其打开以允许同步数据.任何人都可以建议我如何以编程方式实现这一目标?
有没有办法阅读设置?
谢谢.
有人可以确认我的想法是由于SKProductsRequestDelegate仍然被分配而生成以下崩溃报告,但代码本身不是吗?即VC已关闭?
StoreKit: __34-[SKProductsRequest _handleReply:]_block_invoke + 442
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x41682340
Triggered by Thread: 0
Thread 0 Crashed:
0 libobjc.A.dylib 0x38d19626 objc_msgSend + 6
1 StoreKit 0x30c4784a __34-[SKProductsRequest _handleReply:]_block_invoke + 442
2 libdispatch.dylib 0x391f7830 _dispatch_call_block_and_release + 8
3 libdispatch.dylib 0x391f781c _dispatch_client_callout + 20
4 libdispatch.dylib 0x391fe49a _dispatch_main_queue_callback_4CF$VARIANT$mp + 274
5 CoreFoundation 0x2e45f89c __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 4
6 CoreFoundation 0x2e45e170 __CFRunLoopRun + 1296
7 CoreFoundation 0x2e3c8eba CFRunLoopRunSpecific + 518
8 CoreFoundation 0x2e3c8c9e CFRunLoopRunInMode + 102
9 …Run Code Online (Sandbox Code Playgroud) 我在Crashlytics中得到了如下所示的崩溃.
我无法理解应用程序中的这个形式.不幸的是,我自己从来没有能够产生这种崩溃,但它是在野外发生的.
应用程序名称只有一个引用,并且没有任何内容可以显示应用程序的来源.
事实上,没有关于应用程序在何处发生的数据,这表明在didFinishLaunchingWithOptions期间发生了一个问题,因此实际上没有足够的距离显示任何进一步的细节?或者是否有其他原因导致数据中缺少日志以显示问题所在?
任何人都可以建议我如何追踪这个?
Thread : Crashed: com.apple.main-thread
0 libobjc.A.dylib 0x0000000195de3bd0 objc_msgSend + 16
1 CoreFoundation 0x0000000183fd9458 CFRelease + 524
2 CoreFoundation 0x0000000183fe5a18 -[__NSArrayM dealloc] + 152
3 libobjc.A.dylib 0x0000000195de9724 (anonymous namespace)::AutoreleasePoolPage::pop(void*) + 564
4 CoreFoundation 0x0000000183fdd074 _CFAutoreleasePoolPop + 28
5 Foundation 0x0000000184f0e588 -[NSAutoreleasePool release] + 148
6 UIKit 0x0000000188be03f4 -[UIApplication _run] + 588
7 UIKit 0x0000000188bdaf40 UIApplicationMain + 1488
8 _THE_APP_NAME_ 0x0000000100031e20 main (main.m:16)
9 libdyld.dylib 0x000000019647aa08 start + 4
Crashed: com.apple.main-thread
EXC_BAD_ACCESS KERN_INVALID_ADDRESS at 0x00000000f5b2beb8
Run Code Online (Sandbox Code Playgroud)
我在这个帖子的评论中添加以下内容.此代码是与UI相关的主要更改,除了通常的标签设置等,我无法看到问题.
下面的代码被添加到AppDelegate.m,DidFinishLaunchingWithOptions. …
在XCode 5中是否可以更改故事板上的字体和大小?如果我选择UILabel或按钮等,并在右侧的检查器窗格中查找,我无法找到更改字体类型和大小的方法?
我找到了编辑菜单>格式>字体,并且可以增加字体大小,但是必须一次只做一次,而不是能够编辑数字,但是看不到改变字体或颜色等的方法?
我在AppDelegate中调用下面的代码:
-(void) application:(UIApplication *)application performFetchWithCompletionHandler:
(void (^)(UIBackgroundFetchResult))completionHandler {
-(BOOL)backgroundRefresh{
newData = false;
callStartTime = [NSDate date];
[self processAll];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
while(!fetchComplete);
NSLog(@"NOW COMPLETE");
});
NSLog(@"Got here now!");
return newData;
}
Run Code Online (Sandbox Code Playgroud)
对[self processAll]的调用运行具有异步调用等的代码,并将继续循环,直到所有活动完成,重复调用自身.完成所有任务后,fetchComplete将设置为true.这部分工作正常.
我需要代码等待fetchComplete为true,然后将bool返回给AppDelegate.
问题是,非常正确的是,当前检查虽然它可以显示NSLog等,但是将BOOL返回给调用者是没有用的,因为该进程当前是异步的.我已将其设置为异步以便它运行,否则,我发现processAll代码被阻止运行.
有人可以说明如何监视fetchComplete,只有一次是真的将bool返回给调用函数?
我已经尝试在返回while之后将返回移动到异步块,但是由于在块内调用,这会返回语法错误.
非常感谢.
我在AppDelegate中有以下代码.目的是创建几个观察者,然后调用一些代码.一旦该代码完成,然后发布通知,然后观察者应该删除两个观察者并调用完成处理程序.
我的问题是看来观察员没有像我预期的那样被删除.发布通知,并将NSLog条目写入控制台,因此我知道观察者正在工作.但是,在第二次调用时,NSLog被调用两次,第三次调用三次等.
我的想法是,这与从观察者运行的代码块中的删除有关,但是,我不确定如何解决这个问题(如果这确实是问题所在).
有人可以如此善良地解释我是如何实现这一目标的吗?
谢谢.
-(void) application:(UIApplication *)application performFetchWithCompletionHandler:
(void (^)(UIBackgroundFetchResult))completionHandler {
[[NSNotificationCenter defaultCenter] addObserverForName:@"fetchDidCompleteNewData" object:nil
queue:nil usingBlock:^(NSNotification *completed) {
//Remove Observers
[[NSNotificationCenter defaultCenter] removeObserver:self
name:@"fetchDidCompleteNewData"
object:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self
name:@"fetchDidCompleteNoData"
object:nil];
// Post completion
completionHandler(UIBackgroundFetchResultNewData);
NSLog(@"Background fetch completed... New Data");
}];
[[NSNotificationCenter defaultCenter] addObserverForName:@"fetchDidCompleteNoData" object:nil
queue:nil usingBlock:^(NSNotification *completed) {
//Remove Observers
[[NSNotificationCenter defaultCenter] removeObserver:self
name:@"fetchDidCompleteNoData"
object:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self
name:@"fetchDidCompleteNewData"
object:nil];
//post completion
completionHandler(UIBackgroundFetchResultNoData);
NSLog(@"Background fetch completed... No New Data");
}];
GetDetails *getDetails = [[GetDetails alloc] init];
[getDetails backgroundRefresh]; …Run Code Online (Sandbox Code Playgroud) 我有以下代码行
NSNumber *myValue = loadTempValue*0.420;
Run Code Online (Sandbox Code Playgroud)
我试图将 的值设置*myValue为 的值loadTempValue*0.420,
但是,我收到错误
Invalid operands to binary expression ('NSNumber *" and 'double')
有人可以建议如何设置吗?
我有以下代码来生成当前日期,以便让我显示今天采取的步骤数.
但是,我想显示存储的前7天数据,但不确定如何使日期查询显示过去7天的每一天,以便我可以进行7次查询.我认为可以写下7次以下的代码,一个-1 -2 -3等,但不确定我会在哪里进行调整以获得先前的日期.
有人可以为我揭开它的光芒吗?
// Calculate start of day
- (NSDate * )startDateOfToday
{
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit
fromDate:[NSDate date]];
return [calendar dateFromComponents:components];
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
ios ×8
objective-c ×3
ios7 ×2
asynchronous ×1
core-motion ×1
crash ×1
expression ×1
font-size ×1
fonts ×1
icloud ×1
keychain ×1
libobjc ×1
nsdate ×1
nsnumber ×1
observers ×1
operands ×1
settings ×1
skproduct ×1
uilabel ×1
wait ×1
while-loop ×1
xcode5 ×1