小编Ric*_*kiG的帖子

为核心数据(iPhone)实施"自动轻量级迁移"

当我向核心数据模型添加新属性时,我想让我的应用程序能够进行自动轻量级迁移.

在Apple的指南中,这是我能找到的主题的唯一信息:

自动轻量级迁移

要请求自动轻量级迁移,请在addPersistentStoreWithType中传递的选项字典中设置适当的标志:configuration:URL:options:error:.您需要将与NSMigratePersistentStoresAutomaticallyOption和NSInferMappingModelAutomaticallyOption键对应的值设置为YES:

NSError *error;
NSURL *storeURL = <#The URL of a persistent store#>;
NSPersistentStoreCoordinator *psc = <#The coordinator#>;
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
    [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
    [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];

if (![psc addPersistentStoreWithType:<#Store type#>
    configuration:<#Configuration or nil#> URL:storeURL
    options:options error:&error]) {
    // Handle the error.
}
Run Code Online (Sandbox Code Playgroud)

NSPersistentStoreCoordinator以这种方式初始化:

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {

    if (persistentStoreCoordinator != nil) {
        return persistentStoreCoordinator;
    }

    NSURL *storeUrl = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"FC.sqlite"]];

    NSError *error = nil;
    persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] …
Run Code Online (Sandbox Code Playgroud)

iphone data-migration core-data

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

UIButtonTypeCustom类型的UIButton不会显示标题(iPhone)

我一定忽略了一些完全明显的东西?但我的按钮正确显示其图像和大小,但我根本无法显示标题.

我做了一个非常简单的测试,当我这样做时,标题甚至都没出现:

    CGRect frameBtn = CGRectMake(160.0f, 150.0f, 144.0f, 42.0f);
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    [button setImage:[UIImage imageNamed:@"left_halfscreen_button.png"] forState:UIControlStateNormal];
    [button setTitle:@"Hello" forState:UIControlStateNormal];
    [button setFrame:frameBtn];
    NSLog(@"Title:%@", [button currentTitle]);
    //prints "Title:Hello
    [self addSubview:button];
Run Code Online (Sandbox Code Playgroud)

我有一个工厂类为我生成自定义按钮,我想我在那里弄乱了一些细节,所以我将上面的代码直接移到我的UIView,标题仍然是空白.

这是一个错误还是我只是在眼前错过了一些东西.

谢谢额外的一双眼睛:)

iphone uibutton

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

在CGAffineTransform之后转换父/子UIView之间的坐标

在我手动完成所有工作之前,我想问一下是否有一些帮助可以从框架中获得.

我有一个UIView,其中包含另一个带有地图的UIView.父UIView为地图保留了一些图例.最初我在地图视图中定义了一些坐标.例如(100,40),并在父视图中放置一块图形(如谷歌地图中的大头钉等).父视图和子视图都是300x200并且具有相同的原点.这意味着(100,40)在两个视图中都是相同的点.

现在我使用CGAffineTransform缩放并移动子UIView(地图),坐标(100,40)现在位于其他地方.父视图实际上是一个掩码.

我是否可以使用CGAffineTransform矩阵或框架的其他部分来计算并通知父视图现在该点已移动的位置?

即子视图中的(100,400)与父视图中的(100,40)相比,它与转换后的比较是什么?

感谢您的建议或帮助.

孩子UIView的动画

    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:1.0]; 
    CGAffineTransform transform = CGAffineTransformMakeScale(1.8f, 1.8f);
    worldMap.transform = transform;
    worldMap.bounds.origin = newPos;
    [UIView commitAnimations];
Run Code Online (Sandbox Code Playgroud)

iphone objective-c uiview cgaffinetransform

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

查找国家/地区的距离,货币,温度单位等(iPhone)

在我的应用程序的本地化过程中,我经历了很多文档,在某处我确定我读到有一种方法可以获得一组与语言环境相关联的单元.

我相信它说的是"基于文化的单位......"之类的东西.

我想显示一些国家的华氏温度和里程数的温度和距离以及其他国家的摄氏温度和公里数.

有没有办法在iPhone SDK中访问这些单位的列表.

谢谢.

iphone localization iphone-sdk-3.1

23
推荐指数
3
解决办法
4388
查看次数

包含自定义对象的NSMutableDictionaries的NSCoding

我试图序列化SearchEntity对象(自定义对象)含有NSMutableDictionary含一组类型的CategoryEntity(自定义对象).

1 SearchEntity<NSCoding>包含:1 NSMutableDictionary(参数)参数,包含X CategoryEntities<NSCoding>只包含字符串和数字.

在这条线[encoder encodeObject:parameters forKey:kPreviousSearchEntityKey];的SearchEntity encodeWithCoder"我得到GDB:中断每一次,没有错误消息,异常等只是GDB:中断.

这是SearchEntity和参数的实现NSMutableDictionary

#pragma mark -
#pragma mark NSCoding delegate methods

- (void) encodeWithCoder:(NSCoder*)encoder 
{
    //encode all the values so they can be persisted in NSUserdefaults
    if (parameters) 
        [encoder encodeObject:parameters forKey:kPreviousSearchEntityKey]; //GDB:Interrupted!
}

- (id) initWithCoder:(NSCoder*)decoder 
{
    if (self = [super init]) 
    {
        //decode all values to return an object from NSUserdefaults in the same state as when saved …
Run Code Online (Sandbox Code Playgroud)

nscoding nsmutabledictionary ios

22
推荐指数
1
解决办法
3234
查看次数

在loadView中确定正确的大小

如何在loadView中一致地确定正确的大小来布局视图?

我有不同的情况,其中UIViewController被推送到UINavigationController,或UITabBarController存在,或两者兼而有之.如果我硬编码值,这些元素会更改可用的屏幕区域并使其不一致.

在调用loadView的那一刻,我想知道如何调整容器视图的大小,我将我的子视图添加到.

我查看了UIViewController指南,Apple使用了UIScreen mainScreen applicationFrame,但在他们的示例中,这是因为他们正在制作一个全屏应用程序.

我在这里看到了一些答案,但没有一个能够以一致的方式解决这个问题.

谢谢你给予的任何帮助.

cocoa-touch uiviewcontroller loadview ios

20
推荐指数
3
解决办法
8763
查看次数

如何使用CAAnimation进行曲线/圆弧动画?

我有一个用户界面,项目被删除,我想模仿iOS邮件中的"移动到文件夹"效果.将小写字母图标"抛出"到文件夹中的效果.我的将被倾倒在垃圾箱中.

我尝试CAAnimation在图层上使用a 来实现它.据我所知,在文档中我应该能够设置a byValue和a toValue,CAAnimation应该插值.我希望做一个小曲线,所以项目通过项目开始位置的上方和左侧的点.

    CABasicAnimation* animation = [CABasicAnimation animationWithKeyPath:@"position"];
[animation setDuration:2.0f];
[animation setRemovedOnCompletion:NO];
[animation setFillMode:kCAFillModeForwards];    
[animation setTimingFunction:[CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionEaseOut]];
[animation setFromValue:[NSValue valueWithCGPoint:fromPoint]];
[animation setByValue:[NSValue valueWithCGPoint:byPoint]];
[animation setToValue:[NSValue valueWithCGPoint:CGPointMake(512.0f, 800.0f)]];
[animation setRepeatCount:1.0];
Run Code Online (Sandbox Code Playgroud)

我玩了一段时间,但在我看来,Apple意味着线性插值.添加byValue不会计算出漂亮的弧或曲线,也无法通过它为项目设置动画.

我该怎么做这样的动画?

谢谢你给予的任何帮助.

caanimation ios

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

在UISlider动画时触发UIControlEventValueChanged?

我已将我的UISlider设置为响应值更改事件:

[customSlider addTarget:self action:@selector(sliderMove:) forControlEvents:UIControlEventValueChanged];
[customSlider addTarget:self action:@selector(sliderStart:) forControlEvents:UIControlEventTouchDown];
[customSlider addTarget:self action:@selector(sliderEnd:) forControlEvents:UIControlEventTouchUpInside];
Run Code Online (Sandbox Code Playgroud)

我想将滑块设置为上次使用视图时用户离开的位置.我这样做:

[customSlider setValue:position animated:YES];
Run Code Online (Sandbox Code Playgroud)

一切都很好,除了,我已经建立了一个挂在滑块"旋钮"上的"标签",这样用户可以在移动滑块时看到值.当UIControlEventValueChanged调用"sliderMove"方法时,将设置"标记"的位置.

使用[slider setValue:position animated:YES]滑块移动时,但事件不会触发.

是否有我可以访问的代表或涵盖此方案的事件?

谢谢你给予的任何帮助:)

iphone cocoa-touch uislider

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

TouchJSON,处理NSNull

嗨,我正在使用TouchJSON反序列化一些JSON.我过去一直在使用它,在那些情况下我手动处理了NSNull的出现.我认为作者也必须处理这个,所以我再这样做只会是开销.然后我在文档中找到了这个:

避免输出中的NSNull值.

NSData *theJSONData = /* some JSON data */
CJSONDeserializer *theDeserializer = [CJSONDeserializer deserializer];
theDeserializer.nullObject = NULL;
NSError *theError = nil;
id theObject = [theDeserializer deserialize:theJSONData error:&theError];}
Run Code Online (Sandbox Code Playgroud)

我理解它的方式是类的用户可以将C样式的空指针传递给反序列化器,当它遇到NSNull时,它将插入传递给它的值(NULL).所以稍后当我使用这些值时,我不会得到NSNull,而是NULL.

这看起来很奇怪,返回值是一个只能包含Objects的NSDictionary,不应该默认值为'nil'吗?

如果是NULL,我可以检查这样的值吗?

if([jsonDataDict objectForKey:someKey] == NULL)
Run Code Online (Sandbox Code Playgroud)

能够做到这一点似乎更符合逻辑:

if(![jsonDataDict objectForKey:someKey])
Run Code Online (Sandbox Code Playgroud)

更不用说允许传递nil但传递NULL导致崩溃的所有情况.

或者我可以将'nil'传递给解串器吗?

这很大程度上源于我仍在努力与nil,NULL,[NSNULL null],也许我没有看到使用nil的潜在警告.

null objective-c touchjson

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

UICollisionBehavior - 视图通过边界

作为实现UICollisionBehaviour的一部分,我为屏幕边缘设置了边界.然后我添加了一些视图,最后将一个UIPanGestureRecognizer附加到其中一个.

现在我可以使用我的可拖动视图来推动较小的视图.

锤时间!

问题: 如果我将较小的视角转向并将其推向屏幕边缘,它最终将滑过边界并被困在另一侧.我用来击打和推动其他视图的"锤子视图"也会陷入界限.即它在屏幕的一侧被卡住/不可拖动.

我做了一个非常小的例子,看看当我的视图很少而且没有相互冲突的行为时我是否可以重现它,视图仍然可以通过边界.无论是UIDynamics都无法处理,或者(更有可能)我以某种方式配置错误.

下面的小例子有奇怪的行为:

class ViewController: UIViewController {

var animator: UIDynamicAnimator?
var collisionBehaviour: UICollisionBehavior?
var panBehaviour: UIAttachmentBehavior?

override func viewDidLoad() {
    super.viewDidLoad()
}

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)
    setup()
}

func setup() {
    //setup collisionBehaviour and animator
    collisionBehaviour = UICollisionBehavior()
    collisionBehaviour!.collisionMode = UICollisionBehaviorMode.allZeros
    animator = UIDynamicAnimator(referenceView: view)

    //add boundaries
    collisionBehaviour!.addBoundaryWithIdentifier("verticalMin", fromPoint: CGPointMake(0, 0), toPoint: CGPointMake(0, CGRectGetHeight(view.frame)))
    collisionBehaviour!.addBoundaryWithIdentifier("verticalMax", fromPoint: CGPointMake(CGRectGetMaxX(view.frame), 0), toPoint: CGPointMake(CGRectGetMaxX(view.frame), CGRectGetHeight(view.frame)))
    collisionBehaviour!.addBoundaryWithIdentifier("horizontalMin", fromPoint: CGPointMake(0, CGRectGetMaxY(view.frame)), toPoint: CGPointMake(CGRectGetMaxX(view.frame), CGRectGetMaxY(view.frame)))
    collisionBehaviour!.addBoundaryWithIdentifier("horizontalMax", fromPoint: CGPointMake(0, 0), toPoint: CGPointMake(CGRectGetMaxX(view.frame), 0)) …
Run Code Online (Sandbox Code Playgroud)

ios uicollisionbehavior uikit-dynamics swift ios8.1

16
推荐指数
1
解决办法
4012
查看次数