是 O(n) 还是 O(log n)
所以我JSON从一个存储在NSArray被叫中的Web服务中提取了一些数据_infoFromJSON.每个数组元素_infoFromJSON基本上都有一个键/值对的字典.目标是将它们添加到myVehicleObject其中NSMutableArray
for (NSDictionary* myDictionary in _infoFromJSON) {
myVehicleObject *vehicleInMembersProfile;
vehicleInMembersProfile = [[myVehicleObject alloc] init];
vehicleInMembersProfile.make = [[_infoFromJSON objectAtIndex:carCount] objectForKey:@"make"];
vehicleInMembersProfile.carName = [[_infoFromJSON objectAtIndex:carCount] objectForKey:@"nickname"];
vehicleInMembersProfile.year = [[_infoFromJSON objectAtIndex:carCount] objectForKey:@"year"];
carCount ++;
[self.myVehicleObject addObject:vehicleInMembersProfile] ;
};
Run Code Online (Sandbox Code Playgroud)
使用上面的代码我有点实现它,但它不断添加相同的第一个字典myVehicleObject,所以它插入相同的NSDictionary4次过去我使用过:
[self.myVehicleObject addObject:[vehicleInMembersProfile copy]] ;
Run Code Online (Sandbox Code Playgroud)
当我这样做时,它抛出以下异常:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[myVehicleObject copyWithZone:]: unrecognized selector sent to instance 0xab4e130'
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?谢谢!
更新请求的示例JSON:
{
color = SILVER; …Run Code Online (Sandbox Code Playgroud)
我有一个循环通过相当大量的对象的foor循环(目前4000以上,但可能是双倍增长.
我试图加快循环,我能够使用autoreleasepool释放内存并避免应用程序崩溃但是就速度而言,周期很慢.
有人建议我使用有序数组,但我对编程很陌生,所以我有点迷失.有人可以分享一些方向吗?
"Sede"中的对象具有渐进ID
这是我的代码:
NSArray *sedi = [Sede sedeArray];
for (Sede *sedeTmp in sedi)
{
@autoreleasepool {
if (sedeTmp.idSede == idSede)
{
sede = sedeTmp;
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的完整代码:
+ (void)importData:(NSDictionary *)data
{
NSArray *info = data[@"Info"];
if (info != (id)[NSNull null])
{
}
NSMutableArray *utenti = [NSMutableArray arrayWithArray:[Utente utenteArray]];
NSMutableArray *utentiNew = [[NSMutableArray alloc] init];
for (NSDictionary *utenteWS in data[@"Utenti"])
{
NSInteger stato = [(NSNumber *)[NSString decrypt:utenteWS[@"Stato"]] integerValue];
NSInteger idUtente = [(NSNumber *)[NSString decrypt:utenteWS[@"IDUtente"]] integerValue];
Utente *utente …Run Code Online (Sandbox Code Playgroud) 出于某种原因,我在运行应用程序时遇到此错误:
[__NSArrayI removeAllObjects]: unrecognized selector sent to instance
我在.m中设置了NSMutableArray,如下所示:
@implementation ChooseViewController
{
NSMutableArray *trackName;
}
Run Code Online (Sandbox Code Playgroud)
并填充它像这样:
trackName = [JSON valueForKeyPath:@"results.trackName"];
Run Code Online (Sandbox Code Playgroud)
但是,当我运行此代码时,它给了我错误:
[trackName removeAllObjects];
Run Code Online (Sandbox Code Playgroud)
其他一切正常,trackName中的数据也可以.当我运行这段代码时,它只是搞乱了.提到的唯一的其他时间trackName数组是表视图计数:
return [trackName count];
你觉得有什么不对吗?我相信问题在于它认为它是一个NSArray,但它们都不是.
我对初始化有点困惑NSArray。令人困惑的是,我们有不同的init方法来初始化它,如果我只是初始化它而不给出任何大小和任何对象,编译器如何知道RAM. init 方法背后的逻辑/差异是什么?有人可以简单解释一下吗?
编辑:
NSArray *sortedArray = [[NSArray alloc] init];
NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"quota" ascending:NO];
NSArray *sortDescriptors = [NSArray arrayWithObject:descriptor];
//How is that possible to modifying to immutable object
sortedArray = [sortedContainers sortedArrayUsingDescriptors:sortDescriptors];
Run Code Online (Sandbox Code Playgroud)
我知道NSArray和NSMutableArray之间的差异,并且我不是在寻找差异。我只是想知道该代码如何编译/执行而不会出现错误。
我想将以下字符串转换为 NSMuableArray。
var components: String = "library/book/science"
Run Code Online (Sandbox Code Playgroud)
例如,我想在 Swift 中执行以下目标 c 代码
NSArray *componentsArray = [@"library/book/science" componentsSeparatedByString:@"/"];
NSMutableArray *componentsMutableArray = [[NSMutableArray alloc] initWithArray:componentsArray];
[componentsMutableArray addObject:@"astronomy"];
Run Code Online (Sandbox Code Playgroud) 我想将 a 转换NSArray为 a NSDictionary,然后选择 中的键和值,NSDictionary以便稍后能够NSDictionary通过使用其中的键将数据从对象添加到对象中。
我怎样才能以最聪明的方式做到这一点?
这是我到目前为止所拥有的:
func makeCall(completion: result: NSDictionary or Dictionary){
let json = try JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions(rawValue: 0)) as? NSDictionary
let json = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? Array<Any>
}
Run Code Online (Sandbox Code Playgroud)
这两个 JSON 文件看起来几乎相同。不同之处在于 var 类型,因此您将获得数组样式的键和值。我们需要它在字典样式中通过它们的键来获取值。
我正在努力更新结构创建的数组中的单个变量。
struct CurrentPolicyItems {
var id:Int
var currentInsured:String
var currentPremium:String
var currentXDate:String
var typeID:Int
var productID:Int
var buildingID:Int
var noteID:Int
var isUsed:Int
var isTemp:Int
}
struct CurrentPolicyTemp {
static var array = [CurrentPolicyItems]()
}
Run Code Online (Sandbox Code Playgroud)
当我关闭一个类时,我需要将所有 var“isTemp”从 1 更改为 0。并非所有元素都被使用,因此我需要在任何更新之前过滤它们。我相信我已经很接近了,只是无法得到最后一点。
我努力了:
if let items = CurrentPolicyTemp.array.firstIndex( where: { $0.isTemp == 1}) {
CurrentPolicyTemp.array[items].isTemp = 0
}
Run Code Online (Sandbox Code Playgroud)
然而,众所周知,这只会更新单个元素。我尝试过 .filter,但遇到了“item is immutable”错误。
请帮助。
我正在使用仪器工具来查找代码中的泄漏.
工具指示下线100%泄漏.
NSArray*subviews = [[cell subviews] copy];
如何在上面的代码中解决泄漏问题?
提前致谢.
我被卡住了!我不能让这个工作.
这就是我打算做的事情:我在.txt文件中有一些数据,我最终想用NSArray填充!这就是我所做的:
NSString *urlString = [[NSBundle mainBundle] pathForResource:@"intsAndsStrings" ofType:@"txt"];
NSArray *objectsArray = [[NSArray alloc]initWithContentsOfFile:urlString];
NSLog(@"objectsArray is: %@", objectsArray);
Run Code Online (Sandbox Code Playgroud)
我从最后一行得到的唯一输出是;
objectsArray is: (null)
Run Code Online (Sandbox Code Playgroud)
txtFile中的对象用逗号(,)分隔.
请帮我!
nsarray ×10
objective-c ×8
ios ×6
swift ×3
nsdictionary ×2
xcode ×2
arrays ×1
contains ×1
converter ×1
for-loop ×1
iphone ×1
json ×1
memory-leaks ×1
performance ×1