我有一个UINavigationController.我必须从a弹出一个视图UINavigationController并用另一个视图替换它.我们如何搜索UIViewController对象并用另一个替换它?
当我打印
NSMutableArray *allViewControllers = [NSMutableArray arrayWithArray: myDelegate.navigationController.viewControllers];
Run Code Online (Sandbox Code Playgroud)
我试过了..
[allViewControllers removeObjectIdenticalTo: @"NonLogginedViewController"];
[allViewControllers removeObjectIdenticalTo: myDelegate.nonLogginedViewController];
myDelegate.navigationController.viewControllers = allViewControllers;
Run Code Online (Sandbox Code Playgroud)
但它并没有更新的UINavigationController堆栈..我不知道如何使用removeObjectIdenticalTo与UINavigationController堆栈..
请帮我 ..
iphone stack objective-c nsmutablearray uinavigationcontroller
这对我来说很困惑.我有一个功能,这样做:
void ListAllStoredLocations(NSString *SearchTerm){
NSMutableDictionary *item;
NSString* filePath = [[NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingString:@"/Preferences/yourprogram.plist"];
item = [[[NSMutableDictionary alloc] initWithContentsOfFile:filePath] mutableCopy];
NSMutableArray *ReadStoredArray = [item objectForKey:SearchTerm];
NSMutableArray *SortedArray = [[NSMutableArray alloc] init];
NSString *CurrentResult=@"";
for (int i = 0; i< [ReadStoredArray count]; i++){
CurrentResult=(NSString *)[ReadStoredArray objectAtIndex:i];
[SortedArray addObject:CurrentResult];
}
[SortedArray sortUsingSelector:@selector(compare:)];
for (int i = 0; i< [SortedArray count]; i++){
NSLog(@"%@",[SortedArray objectAtIndex:i]);
}
[item release];
Run Code Online (Sandbox Code Playgroud)
}
哪个在第一个for循环中找到输出NSStrings,如下所示:
LOCATION1
LOCATION2
不是一个位置
LOCATION2
LOCATION3
LOCATION2
我希望输出是按字母顺序排列的:
LOCATION1
LOCATION2
LOCATION2
LOCATION2
LOCATION3
不是一个位置
但是,无论如何,"[SortedArray …
你能告诉我在Objective-C中存档NSArray自定义对象的语法或示例程序吗?
我有类Item和类List(有一个NSMutableArray).
每当类Item被实例化(并销毁)时,它都会发布一个通知,该通知由类List监听.当类List收到通知时,将类Item的实例添加到其列表中.
我正在尝试让课程项目也发布一个通知,它即将被释放.问题是类List的NSMutableArray保留了类Item的实例.
处理这种情况最合适的方法是什么?如果我在将它添加到List的数组时减少计数,那么当类List尝试调用removeObject时会抛出异常(因为它会尝试释放该对象.)
基本上,我想要一个"监视器"类列表,其中包含Item的所有"实时"实例的列表.但是,我还需要能够释放/释放实例并让它们报告它们被释放,因此List可以将它们从NSMutableArray中删除.
谢谢你的帮助.
在我正在开发的应用程序中,我有一堆"注册"对象,其中包含一些字符串,日期和整数.所有这些对象在创建时都存储在NSMutableArray中,我现在想要以某种方式保存此数组,以便当用户关闭应用程序等时,可以在应用程序再次打开时存储和恢复内容.
我已经读过plist可能是最好的方法,但我似乎无法找到任何示例,帖子等显示如何做到这一点?
所以基本上:如何在应用关闭时将我的NSMutableArray保存到plist文件,以及如何再次恢复它?
我试图用filterUsingPredicate来剔除我的NSMutableArray元素.
棘手的部分是我总是希望在数组中保留至少10个项目,无论它们是否通过谓词测试.所以类似于:
NSPredicate * cullPredicate = [NSPredicate predicateWithFormat:
@"distanceFromCurrent <= 25 OR index < 10"];
[self.myArray filterUsingPredicate:cullPredicate];
Run Code Online (Sandbox Code Playgroud)
'OR指数<10'表示我想做什么......我意识到它不起作用.
这可能与谓词有关吗?或者我是否需要拉出另一个数组,其元素从10开始,应用过滤器,然后将其添加回原始数组?
这是我的代码:
//-- check for d/b; create it if it doesn't exist
NSString *docsDir;
NSArray *dirPaths;
NSMutableArray *sqliteArray = [NSMutableArray array];
[sqliteArray addObject: @"CREATE TABLE IF NOT EXISTS SiteData (SITE_ID TEXT PRIMARY KEY NOT NULL, STA1 TEXT "
"TBM TEST, SITE_DESC TEXT, REMARKS TEXT, LOOP_COUNT INTEGER, DATE TEXT)" ];
[sqliteArray addObject: @"INSERT INTO SiteData (SITE_ID, LOOP_COUNT) VALUES('','')"];
[sqliteArray addObject: @"CREATE TABLE Readings (SITE_ID TEXT REFERENCES SiteData, LOOP_NBR TEXT, LOOP_CLOSED BINARY, "
"SEQ INTEGER, STA TEXT, BS TEXT, FS TEXT, DESC TEXT, …Run Code Online (Sandbox Code Playgroud) 我有3 NSMutableArrays:a,b,c.
a= [b copy];
a= [c copy];
Run Code Online (Sandbox Code Playgroud)
首次复制的元素(来自b)会发生什么?
在我的use -case中,a是我用作tableview的DataSource的数组,而b,c是在需要时取代数据源的数组.谢谢
具体例子.最后我开始使用setArray.
-(IBAction)selectTab:(id)sender {
if ([(UIButton*)sender tag] == 1000) {
if (![self.butonLocuri isSelected]) {
[tableDataSourceArray setArray:locuriArray];
[self addPins:self.tableDataSourceArray];
[self.myTableView reloadData];
}
}
if ([(UIButton*)sender tag] == 2000) {
if(![self.butonEvenimente isSelected]){
[tableDataSourceArray setArray:evenimenteArray];
[self addPins:self.tableDataSourceArray];
[self.myTableView reloadData];
}
}
}
Run Code Online (Sandbox Code Playgroud) 因为可可设计模式,实例方法的名称count中NSMutableArray是不明确的; 它可以要么返回保存的变量count,或者它的每个,它被称为时间可以指望数组中的项,并返回(可可决定了仅返回一个变量的值的方法foo是foo,不getFoo).Objective C NSMutableArray实际上是在每次count调用方法时计算项目,还是返回预先计算的变量的值?如果这是Java,我会查看源代码,但我找不到源代码NSMutableArray.我查看了API,它说的只是:
返回当前数组中的对象数.
由于没有上下文,我无法判断这是否意味着它内部进行了任何计算.
BKObject 是一个自定义对象,我想将多个 BKObject 放入一个数组中。
BK视图控制器:
#import <UIKit/UIKit.h>
#import "BKObject.h"
@interface BKViewController : UIViewController
@property (strong, nonatomic) NSArray *data;
@property (weak, nonatomic) BKObject *tmpObject;
@end
Run Code Online (Sandbox Code Playgroud)
BKViewController.m:
#import "BKViewController.h"
@implementation BKViewController
- (void)viewDidLoad
{
[super viewDidLoad];
NSMutableArray *arr = [[NSMutableArray alloc] init];
for(NSInteger i = 0; i < 100000; i++){
[arr addObject:[[BKObject alloc] initWithName:@""]];
}
self.data = [NSArray arrayWithArray:arr];
__weak BKObject *weakMutableObject = arr[0];
[arr removeAllObjects];
NSLog(@"%@", weakMutableObject); // print out the object, why?
__weak BKObject *weakObject = self.data[0];
self.data = nil; …Run Code Online (Sandbox Code Playgroud) nsmutablearray ×10
objective-c ×9
ios ×2
iphone ×2
nsarray ×2
cocoa ×1
macos ×1
memory-leaks ×1
nspredicate ×1
performance ×1
plist ×1
sorting ×1
stack ×1
uitableview ×1