我正在尝试在Objective C中合成两个字符串,以便自动创建setter / getter。
在我的实施中:
#import "Song.h"
@implementation Song
@synthesize song, track;
@end
在我的界面中:
#import <Foundation/Foundation.h>
@interface Song : NSObject
@property string song, track;
@end
我在界面文件中收到的错误是“未知的类型名称字符串”。
我在实现文件中遇到的错误是“预期@synthesize中的属性名称”。
我不确定该怎么办,因为我为int做了这个并且它有效。
答案 0 :(得分:5)
您的代码中存在几个问题:
string
的类型,您需要使用NSString
@synthesize
。以下是:
@interface Song : NSObject
// Below I am using copy to avoid referencing potentially mutable strings.
// You may or may not want to use this approach.
@property (nonatomic, copy) NSString *song;
@property (nonatomic, copy) NSString *track;
@end
答案 1 :(得分:3)
在XCode 4.4及更高版本中自动完成合成。
但是,您的实际问题是字符串属性的声明。
在标题中尝试
@property (strong, nonatomic) NSString *song;
@property (strong, nonatomic) NSString *track;
然后,您可以使用
引用这些属性self.song
或使用
直接访问该媒体资源_song
请注意,除非您在setter或getter中访问属性的实例,否则不建议使用第二种方法
它适用于int
的原因是因为int
是一个原语(而objective-c是C的超集)。在Objective-C中,NSString是NSObject,你必须对它有一个强或弱的引用(你必须指向它)。您可以阅读Apple的reference on encapsulating data以获取有关属性的更多信息。
答案 2 :(得分:0)
@property(nonatomic,strong) NSString *song;
@property(nonatomic,strong) NSString *track;
答案 3 :(得分:0)
在实施中:
#import "Song.h"
@implementation Song
@synthesize song, track;
@end
在界面中:
#import <Foundation/Foundation.h>
@interface Song : NSObject
@property (nonatomic, strong)NSString *song;
@property (nonatomic, strong)NSString *track;
@end