- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我是 Swift 和 iOS 开发的新手。最近我在尝试使用 Swift 编写一个使用 CorePlot(用 ObjectiveC 编写)的 iOS 应用程序。我试图在 Swift 中重写 CorePlot iOS 示例代码(在 http://www.raywenderlich.com/13271/how-to-draw-graphs-with-core-plot-part-2 中找到)。示例 objectiveC 中有这样一行:
CPTMutableLineStyle *aaplLineStyle = [aaplPlot.dataLineStyle mutableCopy];
aaplLineStyle.lineWidth = 2.5;
我试着这样重写:
var lineStyle = aaplPlot.dataLineStyle.mutableCopy();
lineStyle.lineColor = aaplColor;
问题是我的 Swift 版本代码出现编译错误
"cannot assign to 'lineColor' in 'lineStyle'".
我也收到一条警告说
"variable lineStyle inferred to have type 'AnyObject', which may be unexpected"
'applePlot'
,顺便说一句,CPTLineStyle 类型在 ObjectiveC 中定义如下:
@interface CPTLineStyle : NSObject<NSCoding, NSCopying, NSMutableCopying>
@property (nonatomic, readonly) CGLineCap lineCap;
@property (nonatomic, readonly) CGLineJoin lineJoin;
@property (nonatomic, readonly) CGFloat miterLimit;
@property (nonatomic, readonly) CGFloat lineWidth;
@property (nonatomic, readonly) NSArray *dashPattern;
@property (nonatomic, readonly) CGFloat patternPhase;
@property (nonatomic, readonly) CPTColor *lineColor;
@property (nonatomic, readonly) CPTFill *lineFill;
@property (nonatomic, readonly) CPTGradient *lineGradient;
@property (nonatomic, readonly, getter = isOpaque) BOOL opaque;
/// @name Factory Methods
/// @{
+(instancetype)lineStyle;
/// @}
/// @name Drawing
/// @{
-(void)setLineStyleInContext:(CGContextRef)context;
-(void)strokePathInContext:(CGContextRef)context;
-(void)strokeRect:(CGRect)rect inContext:(CGContextRef)context;
/// @}
@end
任何人都可以告诉我我做错了什么吗?如何正确地快速重写这些代码行?
谢谢
最佳答案
问题是 mutableCopy
返回一个 AnyObject。 AnyObject 没有属性,因此您不能分配给它的属性。您需要将其转换为 CPTMutableLineStyle。
var lineStyle = aaplPlot.dataLineStyle.mutableCopy() as CPTMutableLineStyle
lineStyle.lineColor = aaplColor;
关于ios - ObjectiveC mutableCopy 如何在 swift 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27915039/
swift 4: let d1 = NSData(base64Encoded: "wAEP/w==")! let d2 = d1.mutableCopy() as! NSMutableData d1
myArray 是 NSDictionary 对象的 NSArray。 [myArray mutableCopy] 包含原始 NSDictionary 对象还是 NSMutableDictionary
我有一个 NSMutableArray调用playersArray在我的单例类中,它适用于我的应用程序主数据源。playersArray 的每个对象是 NSDictionary内容如下: {
我在学习Your Second iOS App苹果公司。该项目基于 ARC。 在研究示例时,我对示例中的以下代码有疑问: // header @interface BirdSightingDataCo
我有一个每秒触发一次的 NSTimer。 而且每一秒我都有一个需要更改的 NSString。 我以前从未尝试过处理内存管理,所以我不确定我在做什么是否正确,但仪器在“alloc”下说 stringBy
我有以下代码: self.itemsCopy = [self.items mutableCopy]; //[self.itemsCopy addObjectsFromArray:sel
我以为我理解了 copy 和 mutableCopy 之间的区别。但今天我对自己产生了怀疑。我还是不太明白。 NSArray *arrayB = [NSArray arrayWithObject:@"
我以为我理解了 copy 和 mutableCopy 之间的区别。但今天我对自己产生了怀疑。我还是不太明白。 NSArray *arrayB = [NSArray arrayWithObject:@"
(我在网上找不到这个) 所有代码都在一个对象中。在 .h 文件中,我定义了一个 NSMutableArray。我分配它 在一个初始化。 -(id)init{ self = [super ini
我尝试更新 Swift 3,但出现以下错误: Ambiguous use of 'mutableCopy()' 在更新到 swift 3 之前。它运行良好。 swift 2.3 NSUserDefau
我正在尝试获取 NSParagraphStyle.default.mutableCopy() 的实例,但我们确定 mutableCopy() 将始终包含一个值吗? var paragraphStyle
我找到了这个 guide要接收 HTTP 正文,女巫包含 AFNetworking 2 的 JSON 格式的错误消息。该指南在 Objective-C 中,我也在尽力将其转换为 Swift。 这是我试
我正在观看一个旧的 WWDC 视频,在他们的 splitViewController 示例中,他们在 splitViewController 的委托(delegate)方法中执行此操作: NSMuta
这是一个错误还是这里有一个微妙的教训? NSNumber *someNumber = @(1); [someNumber respondsToSelector:@selector(mutableCop
以下创建可变字典的方式有区别吗? NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithDictionary:dict2]; N
据我所知,使用诸如 arrayWithArray 之类的辅助方法创建 NSMutableArray 会将数组和可变数组都添加到当前的自动释放池中。使用mutableCopy,数组被复制添加到自动释放池
当我将代码从 swift 2.3 迁移到 3.0 时,它抛出如下错误: 让字典 = (self.testArray!.object(at: i) as AnyObject).mutableCopy()
简而言之,从 NSUserDefaults 获取数组后,当我尝试更改 NSMutableArray 时,我收到了 Mutating method sent to immutable object 错误
var sortingArray:NSMutableArray? sortingArray = fetchedResultsController?.fetchedObjects.mutableCopy
我是 Swift 和 iOS 开发的新手。最近我在尝试使用 Swift 编写一个使用 CorePlot(用 ObjectiveC 编写)的 iOS 应用程序。我试图在 Swift 中重写 CorePl
我是一名优秀的程序员,十分优秀!