我写了一个没有按预期工作的setter.我正在读取文件中的统计信息,并使用这些统计信息填充SVTeam对象的属性.但是,需要计算某些属性(因为它们未在文件中提供).其中一个属性保留了特定团队的主场胜率.我不需要为setter提供参数.两个问题:
null?SVTeam.h
@interface SVTeam : NSObject
@property (weak, nonatomic) NSNumber *homePercentage;
...
...
Run Code Online (Sandbox Code Playgroud)
SVTeam.m
#import "SVTeam.h"
@implementation SVTeam
@synthesize homePercentage = _homePercentage;
...
...
-(void) setHomePercentage
{
float wins = [_homeWins floatValue];
float losses = [_homeLosses floatValue];
float ties = [_homeTies floatValue];
float winPercentage = wins / (wins+losses+ties);
self.homePercentage = [NSNumber numberWithFloat:winPercentage];
}
Run Code Online (Sandbox Code Playgroud)
由于homePercentage是基于其他属性的计算值,因此您可以将其设置为只读属性,而您将在getter中使用计算逻辑.如果您将其保留为setter,那么您的消费者必须首先确保调用setter并调用getter来检索该值.
@property(nonatomic,readonly) NSNumber *homePercentage;
Run Code Online (Sandbox Code Playgroud)
你的getter定义是
- (NSNumber *)homePercentage
{
...
return [NSNumber numberWithFloat:winPercentage];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
73 次 |
| 最近记录: |