我有一个NSDictionary(存储在plist中),我基本上将其用作关联数组(字符串作为键和值).我想使用键数组作为我的应用程序的一部分,但我希望它们按特定的顺序排列(实际上不是我可以编写算法来对它们进行排序的顺序).我总是可以存储一个单独的键数组,但这似乎是一种kludgey因为我总是需要更新字典的键以及数组的值,并确保它们始终对应.目前我只使用[myDictionary allKeys],但显然这会以任意,无保证的顺序返回它们.Objective-C中是否存在我缺少的数据结构?有没有人对如何更优雅地做这个有任何建议?
这主要是一个风格问题,但自从我开始为iPhone编程以来,我一直很好奇其他人的想法.当您的iPhone应用程序中有UIView并且您需要在应用程序的其他位置访问它时(通常在视图控制器中的另一个函数中),您是否喜欢用整数标记视图并使用viewWithTag:消息检索它,或者您是否通常将它设置为视图控制器中的属性,以便以后轻松访问?
将它保存为属性显然会使以后检索更容易,但我认为通过标记视图而不是将其设置为对象属性,可以节省一些(可能是可忽略的)内存量.
我一般都在我的视图控制器上创建属性,主要是因为我很懒,并且检索视图viewWithTag:很烦人.
嘿伙计们 - 我正在写一个非常简单的iPhone应用程序.数据来自plist文件(基本上是NSDictionary),我正在尝试加载到单例类中,并使用我的各种视图控制器来访问数据.
这是我的单例的实现(在此线程之后重新建模)
@implementation SearchData
@synthesize searchDict;
@synthesize searchArray;
- (id)init {
if (self = [super init]) {
NSString *path = [[NSBundle mainBundle] bundlePath];
NSString *finalPath = [path stringByAppendingPathComponent:@"searches.plist"];
searchDict = [NSDictionary dictionaryWithContentsOfFile:finalPath];
searchArray = [searchDict allKeys];
}
return self;
}
- (void)dealloc {
[searchDict release];
[searchArray release];
[super dealloc];
}
static SearchData *sharedSingleton = NULL;
+ (SearchData *)sharedSearchData {
@synchronized(self) {
if (sharedSingleton == NULL)
sharedSingleton = [[self alloc] init];
}
return(sharedSingleton);
}
@end
Run Code Online (Sandbox Code Playgroud)
所以每当我尝试访问我的应用程序中的其他地方的searchDict或searchArray属性时(如TableView委托),如下所示:
[[[SearchData …Run Code Online (Sandbox Code Playgroud) 是否有一个内置于NSString的方法来标记字符串并搜索每个标记的开头?该compare方法似乎只是字符串的开头,并且使用rangeOfString不够,因为它不知道令牌.现在我认为最好的办法就是打电话
[myString componentsSeparatedByString:@" "]
Run Code Online (Sandbox Code Playgroud)
然后遍历结果数组,在字符串的每个组件上调用compare.这是内置的,我只是错过了吗?
objective-c ×4
iphone ×3
cocoa ×2
cocoa-touch ×1
coding-style ×1
ios ×1
nsdictionary ×1
singleton ×1
string ×1
uiview ×1