我想按文件名对所有 NSDocumentDirectory 进行排序,但文件夹应该首先按名称排序,然后所有文件按名称排序。
在我的文档目录中,我也有很多文件和文件夹。
我有这样的数组,
_filePathsArray =[[NSFileManager defaultManager] contentsOfDirectoryAtPath:_selectedPath error:Nil];
Run Code Online (Sandbox Code Playgroud)
提前致谢
我存储UIImage在一个NSDictionary,然后使NSDictionary在应用中的另一个地方.gridImages是一个NSMutableArray
NSDictionary *pageDict = [pageArray objectAtIndex:0];
UIImage *pageImage = [pageDict objectForKey:@"image"];
[gridImages addObject:pageImage];
Run Code Online (Sandbox Code Playgroud)
pagedict返回
{
class = is;
image = "<UIImage: 0x14e20e10>";
name = kaka;
page = 64;
}
Run Code Online (Sandbox Code Playgroud)
这大概是我做的
UIImage *pageImage = [pageDict objectForKey:@"image"];
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试将UIImage添加到数组时,我收到此错误:
-[UIImage stringByDeletingPathExtension]: unrecognized selector sent to instance 0x14e20e10
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
编辑:
对于NSDictionary,我尝试存储UIImageas NSData:
NSData *imageData = UIImagePNGRepresentation(textbookImage);
[pageDict setObject:imageData forKey:@"image"];
[pageDict setObject:textbookName forKey:@"name"];
[pageDict setObject:page forKey:@"page"];
[pageDict setObject:nameOfClass forKey:@"class"];
Run Code Online (Sandbox Code Playgroud)
并解析它像这样:
NSData *imageData = …Run Code Online (Sandbox Code Playgroud) 我有一个NSDictionary NSString作为键和NSNumber值,如下所示
NSDictionary *dictionary = @{@"Apple" : [NSNumber numberWithInt: 6],
@"Banana" : [NSNumber numberWithInt: 1],
@"Peach" : [NSNumber numberWithInt: 14],
@"Lychee" : [NSNumber numberWithInt: 1]};
Run Code Online (Sandbox Code Playgroud)
在这里,我想找到最低的键和值,在这个例子中将是Lychee : 1和之间的关系Banana: 1.对于一个较小的字典,我只是按照这个答案的建议对所有值进行排序,并根据排名检索数组中的第一个(或绑定的)对象.但是,我想知道是否有办法做到这一点,如果NSDictionary非常大,我可以采取最低的键值对?
谢谢!
NSArray *pets = [NSArray arrayWithObjects:@"Cat", @"Dog", @"Rat", nil];
Run Code Online (Sandbox Code Playgroud)
//如何在@"Rat"对象之后将int值456存储在此数组中,+ pet的类型为NSString,因此它不会在while循环中生成错误... ??? 那么我应该使用哪种数据类型来表示可以表示所有nextObject值/对象的宠物指针
NSEnumerator *enumerator = [pets objectEnumerator];
NSString *pet;
while (pet = [enumerator nextObject]) {
NSLog(@"Pet: %@", pet);
}
Run Code Online (Sandbox Code Playgroud) 就地排序数组在面向对象编程中很常见。但这似乎不是 Objective-C 中的默认设置。在 Objective-C 中,似乎无论我使用 NSArray 还是 NSMutableArray 我都无法就地排序,而是必须排序到不同的数组:即另一个内存块。这真的正确吗?
NSArray *germanMakes = @[@"Mercedes-Benz", @"BMW", @"Porsche",
@"Opel", @"Volkswagen", @"Audi"];
NSArray *sortedMakes = [germanMakes sortedArrayUsingComparator:
^NSComparisonResult(id obj1, id obj2) {
if ([obj1 length] < [obj2 length]) {
return NSOrderedAscending;
} else if ([obj1 length] > [obj2 length]) {
return NSOrderedDescending;
} else {
return NSOrderedSame;
}
}];
NSLog(@"%@", sortedMakes);
Run Code Online (Sandbox Code Playgroud) 这是我得到的一个非常奇怪的错误。是这样的:
'NSRangeException', reason: '*** -[NSArray subarrayWithRange:]: range {2, 3} extends beyond bounds [0 .. 3]'
Run Code Online (Sandbox Code Playgroud)
我不明白的是,范围 (2,3) 显然不会超出范围 (0,3)
事实上,它在这些范围内,因为我像这样设置了数组和范围:
NSRange range = NSMakeRange([wordArray indexOfObject:letterInWordArray]+1,wordArray.count-1);
NSMutableArray* sortedSubArray = [[NSMutableArray alloc] initWithArray:[wordArray subarrayWithRange:range]];
Run Code Online (Sandbox Code Playgroud)
本质上,我正在遍历一个名为 wordArray 的数组,并且我想创建一个包含我尚未遍历的所有项目的子数组。有人可以帮我从这里出去吗?
当我尝试将对象添加到可变数组时,我不断收到无法识别的选择器,当在表视图中选择单元格时,我尝试向可变数组添加和删除项目,这是我的代码:
@interface SomeViewController
@property (nonatomic, strong) NSMutableArray *selectedItems;
@end
Run Code Online (Sandbox Code Playgroud)
查看已加载:
-(void)viewDidLoad {
[super viewDidLoad];
self.selectedItems = [[NSMutableArray alloc] init];
}
Run Code Online (Sandbox Code Playgroud)
选择单元格:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
MyCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
[self.selectedItems addObject:[NSString stringWithFormat:@"%@", cell.contactID]];
Run Code Online (Sandbox Code Playgroud)
MyCell 文件上的联系人 ID 属性为:
@property (strong, nonatomic) NSString *contactID;
Run Code Online (Sandbox Code Playgroud)
我不断收到此错误:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayM _fastCStringContents:]: unrecognized selector sent to instance 0x7fc3dd1091b0'
Run Code Online (Sandbox Code Playgroud) 我创建了一个文档,其中包含 Firestore 中的一个数组。
我现在想将该数组存储在我的应用程序本地
我已手动创建一个数组,但如何使用 Firestore 文档中的数据填充它?
//Manually created Array
var devices = [ "Laptop",
"Tablet",
"Smartphone",
"Smartwatch",
"Games Console"]
override func viewDidLoad() {
super.viewDidLoad()
createDevicePicker()
createToolbar()
getPickerData()
}
//Function to pull data from Firestore
func getPickerData() {
let docRef = firebaseDB.collection("devices").document("types")
docRef.getDocument { (document, error) in
if let document = document, document.exists {
//This will print out the data
var test = document.data()
print(test)
} else {
print("Document does not exist")
}
}
}
Run Code Online (Sandbox Code Playgroud)
在一个方法中,我有以下代码:
NSString* tempString = (NSString*)arg;
NSArray* notificationDetails = [tempString componentsSeparatedByString:@"##"];
NSString* tempString1 = [notificationDetails objectAtIndex:2];
.
.
.
.
.
.
NSLog(tempString1);
Run Code Online (Sandbox Code Playgroud)
当我编译代码时,它的编译没有任何错误和警告.但是在运行时(在带有断点的调试模式下)它在NSLog语句中崩溃.我遇到的麻烦是在获取"[notificationDetails objectAtIndex:2];"时 这是什么解决方案.
我在一个属性列表中有几个词典,它构成了我游戏的菜单系统,如下所示:
New game
Easy
Normal
Hard
Load game
Recent
Older
Options
Game
Sound
Run Code Online (Sandbox Code Playgroud)
等等.此列表中的每个项目都是字典.
我使用UINavigationController和UITableViews来显示这个菜单系统.选择项目后,UINavigationController中将推送一个新的UITableViewController以及所选项目的项目.例如,第一个UITableView在其字典中包含"新游戏","加载游戏"和"选项".如果用户选择选项,则创建具有"Game"和"Sound"项(即"Options"的字典)的新UITableViewController.
我用这种方式填充UITableView:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[[UITableViewCell alloc] init] autorelease];
}
// Set up the cell...
cell.text = [[[data keyEnumerator] allObjects] objectAtIndex:indexPath.row];
// Data is the dictionary..
return cell;
}
Run Code Online (Sandbox Code Playgroud)
但显然,这会导致项目与属性列表中定义的顺序不同.
在做我想做的事情时,有谁知道如何保留订单?
谢谢.
nsarray ×10
objective-c ×6
ios ×5
iphone ×4
nsdictionary ×3
nsstring ×2
cocoa ×1
cocoa-touch ×1
firebase ×1
ios7 ×1
nsrange ×1
sorting ×1
swift ×1
uiimage ×1
uitableview ×1