小编And*_*ssa的帖子

带有序键的NSDictionary

我有一个NSDictionary(存储在plist中),我基本上将其用作关联数组(字符串作为键和值).我想使用键数组作为我的应用程序的一部分,但我希望它们按特定的顺序排列(实际上不是我可以编写算法来对它们进行排序的顺序).我总是可以存储一个单独的键数组,但这似乎是一种kludgey因为我总是需要更新字典的键以及数组的值,并确保它们始终对应.目前我只使用[myDictionary allKeys],但显然这会以任意,无保证的顺序返回它们.Objective-C中是否存在我缺少的数据结构?有没有人对如何更优雅地做这个有任何建议?

cocoa objective-c nsdictionary ios

78
推荐指数
5
解决办法
7万
查看次数

您是否标记了UIViews或将其保留为属性?

这主要是一个风格问题,但自从我开始为iPhone编程以来,我一直很好奇其他人的想法.当您的iPhone应用程序中有UIView并且您需要在应用程序的其他位置访问它时(通常在视图控制器中的另一个函数中),您是否喜欢用整数标记视图并使用viewWithTag:消息检索它,或者您是否通常将它设置为视图控制器中的属性,以便以后轻松访问?

将它保存为属性显然会使以后检索更容易,但我认为通过标记视图而不是将其设置为对象属性,可以节省一些(可能是可忽略的)内存量.

我一般都在我的视图控制器上创建属性,主要是因为我很懒,并且检索视图viewWithTag:很烦人.

iphone cocoa-touch coding-style objective-c uiview

15
推荐指数
3
解决办法
6218
查看次数

Singleton在Objective-C中共享数据源

嘿伙计们 - 我正在写一个非常简单的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)

iphone singleton objective-c

3
推荐指数
1
解决办法
2万
查看次数

匹配NSString中单词的开头

是否有一个内置于NSString的方法来标记字符串并搜索每个标记的开头?该compare方法似乎只是字符串的开头,并且使用rangeOfString不够,因为它不知道令牌.现在我认为最好的办法就是打电话

[myString componentsSeparatedByString:@" "]
Run Code Online (Sandbox Code Playgroud)

然后遍历结果数组,在字符串的每个组件上调用compare.这是内置的,我只是错过了吗?

string iphone cocoa objective-c

1
推荐指数
1
解决办法
1512
查看次数