我正在将两个不同的应用程序从Swift转换为Objective-C,而我所挂断的一件事是一系列可变字典的全局属性。
这是语法和Swift以及添加对象的代码,
第一个应用(为地图应用添加字典)
在课堂上声明
var places = [Dictionary<String, String>()]
添加的对象
places.append(["name":"Taj Mahal","lat":"27.175277","lon":"78.042128"])
第二个应用(检查解析时的用户ID是否跟随另一个用户)
在课堂上声明
var isFollowing = ["":false]
添加的对象
query.findObjectsInBackgroundWithBlock({ (objects, error) -> Void in
if let objects = objects {
if objects.count > 0 {
self.isFollowing[user.objectId!] = true
} else {
self.isFollowing[user.objectId!] = false
}
}
要在Objective-C中执行此操作,是否需要使用initWithDictionary方法设置NSObject子类?
有什么建议吗?提前致谢!
答案 0 :(得分:1)
不,您不需要创建自定义类来执行此操作。
通过在iex> inspect 0b11111111_11111111, base: :binary, pretty: true
"0b11111111_11111111"
iex> inspect 999_999, base: :decimal, pretty: true
"999_999"
iex> inspect 0o7777_7777, base: :octal, pretty: true
"0o7777_7777"
iex> inspect 0xFF_FF, base: :hex, pretty: true
"0xFF_FF"
文件中定义它来创建类级数组:
SomeClass.m
使用单例模式初始化并检索它:
static NSMutableArray *_places = nil;
像这样添加:
+ (NSMutableArray *)places
{
if (!_places)
_places = [NSMutableArray new];
return _places;
}
第二个应用程序看起来不需要全局数组;只需一个包含用户ID的NSMutableArray *places = [SomeClass places];
[places addObject: @{
@"name" : @"Taj Mahal",
@"lat" : @(27.175277), // Note: NSNumber, not NSString
@"lon" : @(78.042128) // ditto
}];
:
@property
然后根据需要设置/比较用户ID:
@interface SomeClass : NSObject
@property NSUInteger followingUserId;
@end