在我的项目中,我从.plist中提取数据,更具体地说是从NSDictionary中提取数据.我使用.plist的内容初始化一个字典,效果很好.当我这么做的时候
NSArray *array = [dict allKeys];
Run Code Online (Sandbox Code Playgroud)
它用所有键填充数组,但是以完全随机的顺序填充,与.plist文件中的顺序不同.我真的需要保留订单.字典中的键是数组,如果这可能会导致问题.我得不到什么?
非常感谢提前!
我试图从Array.But创建一个字符串,有如何生成它的条件,如下所述.
NSArray *array=[NSArray arrayWithObjects:@"Hello",@"World",nil];
[array componentsJoinedByString:@","];
Run Code Online (Sandbox Code Playgroud)
这将输出:Hello,World.
但是,如果第一项是空的,那么是否有办法接收唯一的第二项.
我有一个A类对象的数组,让它成为detailsArray.
A类具有日期,名称为属性.
任何人都可以提出一个基于日期对这个数组进行排序的好方法吗?
我如何使用NSSortDescriptor这个数组排序?我知道使用NSSortDescriptor... 排序字典数组
任何帮助是极大的赞赏.....
我有一个NSArray,数字为{0,1,2,3}
计算阶乘4(数组的计数),我有24个可能的排列0,1,2,3
我想知道是否有办法计算所有这些可能的排列并将它们放在一个单独的数组中.
例如,给定上面的数字{0,1,2,3},得到的排列将是:
0123, 0132, 0213, 0231, 0312, 0321,
1023, 1032, 1203, 1230, 1302, 1320,
2013, 2031, 2103, 2130, 2301, 2310,
3012, 3021, 3102, 3120, 3201, 3210
Run Code Online (Sandbox Code Playgroud)
任何帮助是极大的赞赏.非常感谢!
假设您有NSArray重复项@[1,2,3,1,1,2,4,5,6];
找到所有重复项; 这可以是伪代码.这是一个算法问题而不是基础框架(不使用NSSet)问题.
我在下面得到了一个测试代码.
(通过这个例子,我遇到了一个接口,如果没有保留就不能静态分配.)
通过这个代码块,我理解了真正保留的是什么.
我想确定是否会泄漏,我应该在其他地方发布它.我根本不想每次重新初始化阵列.并使其静止.(内存不利但速度有利)
我应该在某处释放这个保留的静态数组吗?它是一个安全的代码还是我完全删除静态和保留单词,并且只是使用arrayObjects方法通常使用init?那么你更喜欢我?
-(NSUInteger)getCoordYByX:(int)ax
{
NSUInteger ret_=-1;
static NSArray *coordsX=nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
coordsX=[[NSArray arrayWithObjects:
[NSNumber numberWithInt:50],
[NSNumber numberWithInt:170],
[NSNumber numberWithInt:190],
[NSNumber numberWithInt:210],
[NSNumber numberWithInt:350],
nil]retain];
/*it is more longer. cropped for test purposes*/
});
ret_=[[coordsX objectAtIndex:ax] unsignedIntegerValue];
return ret_;
Run Code Online (Sandbox Code Playgroud)
}
我想允许不同观点之间的沟通.
我有两个较小的视图,位于更大的视图之上,类似于iOS的视频播放器,但有一些差异.当我点击较大的视图时,我想要切换视图外观,隐藏或取消隐藏.我有一个所有视图都符合的协议.我想将视图添加到我将调用的另一个类中,该类HideViewsService具有NSArray属性.我可以强制使用此类的HideViewsService类,并添加视图,以仅添加符合此协议的视图吗?甚至只是UIViews?
另外,我想在我知道所有的视图上调用一个方法,但我不知道如何通过编译器获取.这是我的-hideAllViews方法:
-(void)hideAllViews
{
for(int i=0; i<self.viewArray.count; i++)
{
id obj = [self.viewArray objectAtIndex:i];
if([obj isKindOfClass:[UIView class]] == false)
{
return;
}
UIView *view = (UIView *)obj;
if([view respondsToSelector:@selector(hide)])
{
[view hide]; // the compiler obviously doesn't like this
}
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢!!我还在学习,所以请告诉我是否有更好的方法(不仅更容易,而且更好).
特别:
self.words = (NSMutableArray*)[self.text componentsSeparatedByString:@" "];
Run Code Online (Sandbox Code Playgroud)
只要有分隔符就可以正常工作.我看到该方法返回包含在NSArray中的原始字符串,如果没有的话.这个单元素NSArray固执地拒绝被强制转换为NSMutableArray.
但是,当我这样做时:
self.words = [NSMutableArray arrayWithArray:self.words];
Run Code Online (Sandbox Code Playgroud)
它工作得很好.
这里有什么我想念的吗?从NSArray转换为NSMutableArray是不好的做法吗?
var cellHeights: [CGFloat] = [CGFloat]()
if let height = self.cellHeights[index] as? CGFloat {
self.cellHeights[index] = cell.frame.size.height
} else {
self.cellHeights.append(cell.frame.size.height)
}
Run Code Online (Sandbox Code Playgroud)
我需要检查指定索引处的元素是否存在.但是上面的代码不起作用,我得到了构建错误:
从CGFloat到CGFloat的条件下转总是成功的
我也尝试过:
if let height = self.cellHeights[index] {}
Run Code Online (Sandbox Code Playgroud)
但这也失败了:
Bound value in a conditional binding must be of Optional type
Run Code Online (Sandbox Code Playgroud)
任何想法都错了吗?
我使用NSApplication和NSWorkspace来获取正在运行的应用程序列表.
但它只给我管理员激活的应用程序,而不是后台运行的根进程.
我希望获得所有正在运行的进程的列表,并在新进程生成后立即更新该列表.
我不想使用NSTask和解析输出.
有没有解决这个问题?
NSArray * runningapps = [[NSWorkspace sharedWorkspace] runningApplications];
Run Code Online (Sandbox Code Playgroud) nsarray ×10
objective-c ×7
ios ×5
iphone ×2
xcode ×2
cocoa-touch ×1
combinations ×1
for-loop ×1
macos ×1
memory-leaks ×1
nsdictionary ×1
nsstring ×1
nsworkspace ×1
plist ×1
protocols ×1
static ×1
swift ×1