2015-01-13 5 views
1

Я новичок в разработке Swift и iOS в целом. Недавно я пытался использовать Swift для записи приложения iOS, которое использует CorePlot (который написан в ObjectiveC). Я попытался переписать образец кода CorePlot iOS (найденный в http://www.raywenderlich.com/13271/how-to-draw-graphs-with-core-plot-part-2) в Swift. Существует линия, как это в образце ObjectiveC:Как ObjectiveC mutableCopy работает в swift

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 

Может ли тело сказать мне, если я делаю что-то не так? Как правильно переписать эти строки кода быстро?

Благодаря

ответ

5

Проблема заключается в том, что mutableCopy возвращает AnyObject. AnyObject не имеет свойств, поэтому вы не можете присвоить его свойства. Вам нужно передать это в CPTMutableLineStyle.

var lineStyle = aaplPlot.dataLineStyle.mutableCopy() as CPTMutableLineStyle 
lineStyle.lineColor = aaplColor; 
+0

Еще раз спасибо. Я нашел его в конце концов, поэтому я удалил свой предыдущий комментарий с вопросом, где CPTMutableLineStyle, потому что я не видел, чтобы ваш комментарий отвечал на него. – trungdinhtrong

Смежные вопросы