我保存到NSUserDefaults的设置中有一个非强制性对象,没有合理的默认值.在用户为此对象设置值之前,当我从NSUserDefaults取消归档时,应用程序会生成错误"[NSKeyedUnarchiver initForReadingWithData:]:data为NULL".我忽略了错误,否则应用程序工作正常.
有没有最好的做法来避免这种情况,这是一个担心吗?
我已经尝试过提出类似问题的解决方案,但没有运气.获取请求无法找到实体名称"GarmentType".
这是我的数据模型:

此助手类别中的executeFetchRequest会引发错误:
//
// GarmentType+Create.m
// Dressy
//
// Created by Michael Mangold on 9/4/13.
// Copyright (c) 2013 Michael Mangold. All rights reserved.
//
#import "GarmentType+Create.h"
@implementation GarmentType (Create)
// Creates or fetches a Core Data GarmentType entity.
+ (GarmentType *)garmentTypeWithName:(NSString *)name inManagedObjectContext:(NSManagedObjectContext *)context
{
NSLog(@"name:%@ context:%@",name,context);
GarmentType *garmentType = nil;
// Build fetch request.
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"GarmentType"];
request.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]];
request.predicate = [NSPredicate predicateWithFormat:@"name = %@",name];
// Execute fetch requesst.
NSError *error = …Run Code Online (Sandbox Code Playgroud) 当我改变我的UIBarButtonItems时,它们会突然改变,不像默认情况下会提供一个漂亮而快速的淡入淡出动画.在视图控制器之间进行切换时,您可以看到这一点,例如,后退按钮将淡入淡出.我该如何模拟相同的效果?
我有一个逐步建立的UIBezierPath(圆圈):
[circlePath addArcWithCenter:clockCenter radius:radius startAngle:angleRadians endAngle:1.5*M_PI clockwise:YES];
...
[circlePath closePath];
[COLOR_CIRCLE setFill];
[circlePath fill];
Run Code Online (Sandbox Code Playgroud)
偶尔,我想为填充设置动画,这样它需要一秒钟才能完全填充,并在构建时遵循路径(顺时针).完成此任务的首选方法是什么?现在我正在考虑核心动画,但我希望有一个填充:withDelay或一些我没有偶然发现的东西.TIA.
我的应用程序使用 NSUbiquityKeyValueStore(对象数组)在 iCloud 中存储单个键值对。当对数组中的任何对象进行更改时,整个数组都会保存到 iCloud。只要每个设备都有机会在本地进行更改之前下载最新更新,这种方法就非常有效。否则,在其他设备的最新更新被拉下来之前,本地更改可能会被推送到 iCloud,并且这些更新会在所有设备上丢失。这是我的应用程序的缺点还是 iCloud 的缺点,我该如何防止这种情况发生?
我正在阅读iBook Swift编程语言,并且看到了一个我不理解的约定,并且没有在书中解释过:变量和函数后跟一行变量或函数名称.
例如:
var n = 2
while n < 100 {
n = n * 2
}
n
var m = 2
do {
m = m * 2
} while m < 100
m
Run Code Online (Sandbox Code Playgroud)
和:
func returnFifteen() -> Int {
var y = 10
func add() {
y += 5
}
add()
return y
}
returnFifteen()
Run Code Online (Sandbox Code Playgroud)
变量或函数名称在一行上的这些行的目的是什么?
TIA
根据iOS CAGradientLayer文档,type属性只有一个有效值kCAGradientLayerAxial,它也恰好是默认值.这个属性的目的对我来说是一个谜,因为我想要实现径向CAGradientLayer而不覆盖drawLayer:inContext,并且希望找到类似于kCAGradientLayerRadial的东西.任何照明都赞赏.
我一直不成功,在一个动画闪烁的行程CAShapeLayer使用的答案从这个以前的线程,许多搜索后,我可以找到使用动画行程没有其他例子CABasicAnimation.
我想要做的是让我的CAShapeLayer脉冲在两种颜色之间.使用CABasicAnimation不透明效果很好,但是[CABasicAnimation animationWithKeyPath:@"strokeColor"]我不知道,我很欣赏有关如何成功实施的任何建议.
CABasicAnimation *strokeAnim = [CABasicAnimation animationWithKeyPath:@"strokeColor"];
strokeAnim.fromValue = (id) [UIColor blackColor].CGColor;
strokeAnim.toValue = (id) [UIColor purpleColor].CGColor;
strokeAnim.duration = 1.0;
strokeAnim.repeatCount = 0.0;
strokeAnim.autoreverses = NO;
[shapeLayer addAnimation:strokeAnim forKey:@"animateStrokeColor"];
// CABasicAnimation *opacityAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"];
// opacityAnimation.fromValue = [NSNumber numberWithFloat:0.0];
// opacityAnimation.toValue = [NSNumber numberWithFloat:1.0];
// opacityAnimation.duration = 1.0;
// opacityAnimation.repeatCount = 0.0;
// opacityAnimation.autoreverses = NO;
// [shapeLayer addAnimation:opacityAnimation forKey:@"animateOpacity"];
Run Code Online (Sandbox Code Playgroud)
取消注释不透明度动画会导致预期的不透明度淡化.笔画动画不起作用.隐式strokeColor按预期更改动画,但我想记录确认strokeColor可以使用CABasicAnimation显式动画.
更新:具体问题是shapeLayer.path为NULL.纠正修复问题.
我有一个用户(带有iPhone 5)报告我的应用程序在屏幕变黑(闪屏为黑色)后大约15秒内在启动时崩溃.用户下载了TestFlight构建,其中我在App委托中包含了检查点,但是我没有得到证据证明这些检查点已经过了,我从未收到过崩溃报告.
我将故事板上的入口点更改为空白视图控制器,现在我可以看到检查点正在交叉.我发现Watchdog暂停了应用程序,因为故事板资源需要很长时间才能加载,但所有图像都是根据需要实时构建的,除了四个小的标签栏图标.有几个音频文件,但它们是按需加载的.我想不出任何可能造成延误的其他资源.没有人报告过这个问题,我很难过.
有任何见解,特别是我没有看到来自TestFlight的崩溃报告或检查点的原因.
当我在UICollectionView下面添加子视图时,有时子视图显示在UICollectionView单元格上方.这是子视图插入代码:
[self.collectionView insertSubview:self.garmentView atIndex:0];
Run Code Online (Sandbox Code Playgroud)
不确定我是否没有遵循最佳做法或以其他方式遗漏明显的东西.任何协助赞赏.
**编辑**值得注意的是,这只发生在横向,当最右边的单元格放大时.
我在model.h中有以下声明:
@interface Model: NSObject {
NSMutableArray *myMutableArray;
....
}
@property (nonatomic) double myDouble;
Run Code Online (Sandbox Code Playgroud)
model.m中相应的@synthesize:
@synthesize myDouble;
Run Code Online (Sandbox Code Playgroud)
然后我有以下setter覆盖:
-(void) setMyDouble: (double) newDouble{
myDouble = newDouble;
[myMutableArray addObject:[NSNumber numberWithDouble:myDouble]];
}
Run Code Online (Sandbox Code Playgroud)
在数组赋值后设置一个断点,调试器为myMutableArray显示以下内容:
myMutableArray =(_ NSArrayM*)0x631c450 1个对象
0 =(NSCFNumber*)0x631c6a0
所以,我的双子似乎没有正确进入阵列.我随后为NSStrings的数组赋值,在调试器中显示正常.myDouble和newDouble的值都很好(通常只是一个整数).
我已经阅读了几个关于为NSMutableArrays分配双精度的线程,并没有发现任何异常的东西.任何指导将不胜感激.
更新
看起来代码是正确的,但我不明白调试器显示的是NSNumber的地址而不是它的值.谢谢大家的回复,非常感谢!:)