小编ant*_*kes的帖子

将NSManagedObject存储在字典中(NSDictionary)

我有一个自定义类,它是一个子类NSManagedObject.我想将它存储在字典中,但是当我尝试这样做时,我收到一个Property list invalid for format: 200错误.

以下是我尝试创建字典的方法:

NSDictionary *dictionary = 
    [NSDictionary dictionaryWithObject: voiceMemo forKey:@"voiceMemo"];
Run Code Online (Sandbox Code Playgroud)

尝试时结果相同

NSDictionary *dictionary = 
    [NSDictionary dictionaryWithObject: (NSData *) voiceMemo forKey:@"voiceMemo"];
Run Code Online (Sandbox Code Playgroud)

但是,在尝试单独保存各个属性时,它可以正常工作:

NSDictionary *dictionary = 
    [NSDictionary dictionaryWithObject: voiceMemo.attribute forKey:@"attribute"];
Run Code Online (Sandbox Code Playgroud)

NSDictionary应该能够存储数据对象,所以我猜,真正的问题是如何将NSManagedObject对象转换为NSData

iphone cocoa-touch nsdictionary nsmanagedobject ios

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

从UIPanGestureRecognizer获取原始触摸位置

我的观点有所UIPanGestureRecognizer补充.
问题是,当触摸被识别为平移手势时,它必须移动几个点,并且我无法在该UIGestureRecognizerStateBegan状态下提取原始触摸位置.在这种状态下,translationInView:是(0,0),并且从这一点开始计算任何后续移动,而不是从原始移动.

有没有办法从手势识别器本身提取原始位置,还是我需要覆盖该touchesBegan:方法?

cocoa-touch objective-c uigesturerecognizer ios

11
推荐指数
1
解决办法
7917
查看次数

使用CoreGraphics在视网膜显示器上绘图 - 图像像素化

在我的iOS应用程序中,我正在尝试使用CoreGraphics绘制曲线.绘图本身工作正常,但在视网膜显示器上,图像使用相同的分辨率绘制,并且不会使像素加倍.结果是像素化图像.

我正在使用以下功能绘图:

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch = [touches anyObject];
    CGPoint currentPoint = [touch locationInView:self.canvasView];

    UIGraphicsBeginImageContext(self.canvasView.frame.size);
    [canvasView.image drawInRect:self.canvasView.frame];
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    CGContextSetShouldAntialias(ctx, YES);
    CGContextSetLineCap(ctx, kCGLineCapRound);
    CGContextSetLineWidth(ctx, 5.0);
    CGContextSetRGBStrokeColor(ctx, 1.0, 0.0, 0.0, 1.0);
    CGContextBeginPath(ctx);
    CGContextMoveToPoint(ctx, lastPoint.x, lastPoint.y);
    CGContextAddLineToPoint(ctx, currentPoint.x, currentPoint.y);
    CGContextStrokePath(ctx);
    canvasView.image =  UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    lastPoint = currentPoint;
    // some code omitted from this example
}
Run Code Online (Sandbox Code Playgroud)

我发现的建议是使用scaleFactor属性CGContextSetShouldAntialias()函数,但到目前为止这些都没有帮助.(虽然我可能不恰当地使用它们.)

任何帮助将不胜感激.

core-graphics ios retina-display

9
推荐指数
1
解决办法
4677
查看次数

iPhone:什么时候应该使用网络活动指标

我刚刚开始在我的应用程序中包含网络功能.我知道当用户正在积极等待某事时你应该使用网络活动指示器,但是如果它只是与服务器的微妙背景通信(在我的情况下,只是为了更新值)呢? - 它仍然是好的做法让用户知道您的应用正在连接到互联网?

这是我对iOS平台感兴趣的东西 - 它让开发人员告诉用户是否正在使用互联网.

更新:在这个特定的情况下,我正在下载一个4个字符长的文本文件!

iphone networking activity-indicator ios

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

iOS核心动画:旋转的锚点不正确

我想在iOS中实现基本旋转动画,其中视图围绕其中心点连续旋转.

但是,由于某种原因,旋转的锚点始终是父视图的原点,而不是旋转视图的中心.
因此,即使我手动设置锚点,视图也会围绕屏幕的左上角旋转.

这是我正在做的事情:

// Add shape layer to view
CAShapeLayer *shapeLayer = [[CAShapeLayer alloc] init];
CGRect shapeRect = CGRectMake(0, 0, 100, 100);
UIBezierPath *roundedRect = [UIBezierPath bezierPathWithRoundedRect:shapeRect cornerRadius:5];
shapeLayer.path = roundedRect.CGPath;
shapeLayer.anchorPoint = CGPointMake(0.5, 0.5);
shapeLayer.fillColor = [[UIColor redColor] CGColor];

[self.view.layer addSublayer:shapeLayer];

// Set rotation animation
CATransform3D rotationTransform = CATransform3DMakeRotation(M_PI, 0, 0, 1);
CABasicAnimation *rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform"];
rotationAnimation.toValue = [NSValue valueWithCATransform3D:rotationTransform];
rotationAnimation.duration = 1.0f;
rotationAnimation.cumulative = YES;
rotationAnimation.repeatCount = HUGE_VALF;

[shapeLayer addAnimation:rotationAnimation forKey:@"transform"];
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激.

core-animation uiview ios

5
推荐指数
1
解决办法
6099
查看次数

如何在iOS工具栏中显示标准的向上/向下控件

我想知道Apple是否为工具栏的上/下箭头键提供标准控件?所有其他熟悉的按钮都存在于Interface Builder中,但不存在箭头键.

箭头控件

有没有办法以编程方式显示它们?

cocoa-touch interface-builder ios

4
推荐指数
1
解决办法
1637
查看次数

CoreData迁移和数据映射:从现有属性创建新实体

我真的希望有人能够帮助我解决这个问题.我试图第一次在Xcode中创建一个数据映射模型(对于iOs应用程序).

这应该是一个非常简单的迁移(尽管轻量级迁移不包括在内); 这是我最初拥有的以及新数据库的样子: 数据库模型图像之前/之后

改变了什么:

  • 我有一个新的属性(DBdisplayOrder),这是可选的
  • 我有一个新的多对多关系.我想将旧数据库的DBreminder(NSDate)属性移动到新的DBreminderDate.新表中的两个属性都是可选的.

所以基本上我只需要从一个属性复制数据,该属性现在位于一个新实体中.

如果有人能指出我正确的方向,或者只是推荐一个好的资源来学习和开始,我将非常感激.

database cocoa core-data

4
推荐指数
1
解决办法
1845
查看次数

无法识别的选择器发送到实例"问题

我的代码在途中突然出现,并在使用导航栏按钮时崩溃.

错误信息: *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIView newMemoViewController:didAddMemo:]: unrecognized selector sent to instance 0x5b55a60'

在调试时,程序会运行该cancel方法,并在该@synthesize行引发异常.但是,我看不出它有什么问题.

症状是相同的,所以我只包括Cancel按钮的相关代码:

NewMemoViewController.h

#import <UIKit/UIKit.h>
@protocol NewMemoDelegate;


@class AKVoiceMemo;


@interface NewMemoViewController : UIViewController {
    @private
        AKVoiceMemo *voiceMemo;
        id <NewMemoDelegate> delegate;
}

@property (nonatomic, retain) AKVoiceMemo *voiceMemo;
@property (nonatomic, assign) id <NewMemoDelegate> delegate;

@end

@protocol NewMemoDelegate <NSObject>
- (void)newMemoViewController:(NewMemoViewController *)newMemoViewController didAddMemo:(AKVoiceMemo *)voiceMemo;


@end
Run Code Online (Sandbox Code Playgroud)

NewMemoViewController.m

#import "NewMemoViewController.h"

@synthesize delegate;


- (void)viewDidLoad {
    UIBarButtonItem *cancelButtonItem = [[UIBarButtonItem alloc] …
Run Code Online (Sandbox Code Playgroud)

iphone cocoa-touch objective-c

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