我有一个NSArray包含数字作为NSString对象.即.
[array addObject:[NSString stringWithFormat:@"%d", 100]];
Run Code Online (Sandbox Code Playgroud)
如何以数字方式对数组进行排序?我可以使用compare:options并指定NSNumericSearch为NSStringCompareOptions吗?请给我一个示例/示例代码.
我有一个iPhone应用程序搜索文件夹,整理所有音频文件的数组,并让他们回放.问题是,如果我正在搜索的文件夹中有一个子文件夹,它将跳过它/不进入其内容.
我的代码如下:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSDirectoryEnumerator *direnum = [[NSFileManager defaultManager] enumeratorAtPath:documentsDirectory];
NSString *pname;
while (pname = [direnum nextObject])
{
[musicArray addObject:[pname stringByDeletingPathExtension]];
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是继续搜索其子文件夹,我将如何去做?
我不确定我的问题究竟是什么,因为我现在已经使用这种方法一段时间了,从来没有遇到过这个问题.
基本上,正如标题所说.此代码从位于"Resources"组中的plist加载数据
NSString *myFile = [[NSBundle mainBundle] pathForResource:@"myList" ofType:@"plist"];
myArray = [[NSArray alloc]initWithContentsOfFile:myFile];
NSLog(@"%@", myArray);
Run Code Online (Sandbox Code Playgroud)
它显示(null).谁知道为什么?
我在同一个ViewController中有另一个设置并且工作得很好.然而,这个特定的钳子不会加载.我甚至还删除了plist,只是从另一个创建了一个副本,以确保不是结构问题.
我做错了吗?我应该使用FileManager吗?
更新------------------------------------------------- ------------------------
好吧,我无法相信我要说的话.大声笑
我正在使用XCode 4,你在Xcode中编辑plists的方式与Xcode 3.x不同.和早期版本一样,你可以选择你想要的plist的根(数组,字典等)我的问题是我试图加载到NSArray中的plist实际上是一个结构化的字典.但是我从来没有在Xcode中看到这个,除了使用TextEdit或其他文本编辑器浏览内容之外,我不知道如何看到这个.
我必须说,很傻.有谁知道为什么XCode 4不会像XCode 3.x那样显示plist的根?
XCode 3.x:http://dl.dropbox.com/u/919254/XCode3.png
XCode 4:http://dl.dropbox.com/u/919254/Screen%20shot%202011-04-10%20at%202.30.35%20AM.png
我有一个包含2个字符串的数组的plist看到图像:
http://imageshack.us/photo/my-images/263/myplist.png/
在我的viewDidLoadi中添加:
NSString *file = [[NSBundle mainBundle] pathForResource:@"Data" ofType:@"plist"];
NSArray *array = [NSArray arrayWithContentsOfFile:file];
NSLog(@"array = %@", array);
Run Code Online (Sandbox Code Playgroud)
但我总是null为什么?感谢帮助.
更新:解决方案是你需要手动编辑plist文件(Xcode4默认使用Dictionnary)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<array>
<string>HO</string>
<string>HI</string>
</array>
</array>
</plist>
Run Code Online (Sandbox Code Playgroud) 这是我的尝试:
H文件:
@interface Strings : NSArray
@end
Run Code Online (Sandbox Code Playgroud)
M文件:
@implementation Strings
- (id) init
{
[self initWithObjects:
@"One.",
nil];
return self;
}
@end
Run Code Online (Sandbox Code Playgroud)
我跑的时候得到这个:
'NSInvalidArgumentException',原因:' * - [NSArray initWithObjects:count:]:仅为抽象类定义的方法.定义 - [Strings initWithObjects:count:]!'
这就是我所做的:
H文件:
@interface Strings : NSObject
+ (NSArray*) getStrings;
@end
Run Code Online (Sandbox Code Playgroud)
M文件:
@implementation Strings
+ (NSArray*) getStrings
{
NSArray* strings = [[NSArray alloc] initWithObjects:
@"One.",
nil];
return strings;
}
@end
Run Code Online (Sandbox Code Playgroud) 我有一个NSArray与NSNumber对象具有int值:
arrayOfValues = [[[NSArray alloc] initWithObjects: [NSNumber numberWithInt:1], [NSNumber numberWithInt:3], [NSNumber numberWithInt:5], [NSNumber numberWithInt:6], [NSNumber numberWithInt:7], nil] autorelease];
[arrayOfValues retain];
Run Code Online (Sandbox Code Playgroud)
我试图像这样迭代数组:
int currentValue;
for (int i = 0; i < [arrayOfValues count]; i++)
{
currentValue = [(NSNumber *)[arrayOfValues objectAtIndex:i] intValue];
NSLog(@"currentValue: %@", currentValue); // EXE_BAD_ACCESS
}
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?
我有2个nsarray,具有相同的值,但顺序不同.
NSArray*array1 = {0,1,2,3}
NSArray*array2 = {2,3,1,0}
我需要一种方法来确定两个数组是否具有不同顺序的相同值.
的种类
-(BOOL) isSameValues:(NSArray*)array1 and:(NSArray*)array2;
Run Code Online (Sandbox Code Playgroud) 我试图过滤掉NSArray的NSArray.在我的下面的例子中,我希望dict1,dict2和dict4分组在一个数组中,dict3和dict5分组在第二个数组中,dict6在第三个数组中.
我在NSArray中获取这些数据,所以基本上下面的"orig"数组是我的输入,我知道我需要根据"Name"键进行分组.
我没有循环遍历NSArray,而是使用valueForKeyPath基于键路径返回数组,但这不起作用(与日志崩溃 - [NSMutableArray addObjectsFromArray:]:数组参数不是NSArray').
任何建议.
NSDictionary *dict1 = @{@"Name" : @"T1", @"Age" : @"25"};
NSDictionary *dict2 = @{@"Name" : @"T1", @"Age" : @"25"};
NSDictionary *dict3 = @{@"Name" : @"T2", @"Age" : @"27"};
NSDictionary *dict4 = @{@"Name" : @"T1", @"Age" : @"25"};
NSDictionary *dict5 = @{@"Name" : @"T2", @"Age" : @"27"};
NSDictionary *dict6 = @{@"Name" : @"T3", @"Age" : @"28"};
NSArray *orig = @[dict1, dict2, dict3, dict4, dict5, dict6];
NSMutableArray *final = [NSMutableArray array];
final = [orig valueForKeyPath:@"@unionOfArrays.Name"];
NSLog(@"Final …Run Code Online (Sandbox Code Playgroud) 我在页面上输出了一个JSON数组.我想将此JSON数组转换为NSArray.
这是网页上的JSON输出:
[{"city":"Current Location"},{"city":"Anaheim, CA"},{"city":"Los Angeles, CA"},{"city":"San
Diego, CA"},{"city":"San Francisco, CA"},{"city":"Indianapolis, IN"}]
Run Code Online (Sandbox Code Playgroud)
这是我的NSURL调用和NSJSONSerialization:
NSString *cityArrayURL = [NSString stringWithFormat:@"http://site/page.php";
NSData *cityData = [NSData dataWithContentsOfURL:[NSURL URLWithString:cityArrayURL]];
NSError *error;
NSDictionary *cityJSON = [NSJSONSerialization JSONObjectWithData:cityData
options:kNilOptions error:&error];
Run Code Online (Sandbox Code Playgroud)
我想将名为cityJSON的NSDictionary转换为NSArray.有人能告诉我下一步可能是什么吗?谢谢!
在我填充了一个NSMutableArray对象并尝试用它做某事之后,它包含(id)0x0了一些索引.我认为NSMutableArray在Objective-C中根本不可能添加nil 所以我想知道为什么会发生这种情况.
不幸的是,"有时候".它可以通过下载超过5000个瓷砖来重现,只是为了获得足够高的金额以便发生这种情况.即使有超过5000个瓷砖,它有时也会完美无缺.
我的应用程序有一个按钮,可以开始下载特定区域的地图图块.下载在后台线程中并行发生,并为每个下载的磁贴报告.
为了允许取消下载,在我的下载器单例中,我有一个临时表NSMutableArray,可以保存每个下载的磁贴的哈希值.取消后,我可以使用该哈希列表删除数据库中的每个已保存的磁贴.
在下载过程中保存哈希似乎没问题,但是当我真的想要对它做任何事情时(我用[_currentTileHashes copy]它来改变它NSArray以给予删除方法),它会抛出NSInvalidArgumentException一行说:
-[__NSPlaceholderArray initWithObjects:count:]: attempt to insert nil object from objects[3402]
Run Code Online (Sandbox Code Playgroud)
当我使用调试器检查_currentTileHashes可变数组时,我确实看到一个或两个索引实际上是nil或(id)0x0.这个截图说明了它:
此代码来自每个tile下载的回调,它会散列磁贴,将其添加到hashes数组并回调UI以获取进度:
- (void)tileCache:(RMTileCache *)tileCache didBackgroundCacheTile:(RMTile)tile withIndex:(NSUInteger)tileIndex ofTotalTileCount:(NSUInteger)totalTileCount {
DebugLog(@"Cached tile %lu of %lu.", (unsigned long)tileIndex, (unsigned long)totalTileCount);
if (_currentlyDownloading) {
float progress = (float)tileIndex / (float)totalTileCount;
NSDictionary *progressDict = @{@"progress" : [NSNumber numberWithFloat:progress],
@"routeId" : _downloadingRoute.routeId};
[_currentTileHashes addObject:[RMTileCache tileHash:tile]];
[[NSNotificationCenter defaultCenter] …Run Code Online (Sandbox Code Playgroud) nsarray ×10
objective-c ×7
ios ×5
iphone ×4
plist ×2
cocoa ×1
cocoa-touch ×1
compare ×1
extend ×1
iterator ×1
mapbox ×1
nsbundle ×1
nsdictionary ×1
nsnumber ×1
sorting ×1