我遇到了与objective-c中的数组中的指针相关的问题.
我正在尝试做的是获取NSArray中的指针,将它们传递给方法,然后将返回的值分配回原始指针(属于该数组的指针).
根据我从C和C++中所知,通过解除引用数组中的指针,我应该能够更改它们指向的值...这是我正在使用的代码,但它不起作用(价值电话)指向永远不会根据NSLog输出更改).
NSArray *phoneNumbers = [phoneEmailDict objectForKey:@"phone"];
for (NSString* phone in phoneNumbers) {
(*phone) = (*[self removeNonNumbers:phone]);
NSLog(@"phone:%@", phone);
}
Run Code Online (Sandbox Code Playgroud)
这是我传递NSString*的方法签名:
- (NSString*) removeNonNumbers: (NSString*) string;
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我正在使用可变电话迭代phoneNumbers中的每个NSString*.我通过手机删除NonNumbers :,它返回修改后的NSString*.然后取消引用从removeNonNumber返回的指针并将值赋给phone.
你可以说,我可能不太了解Objective-C对象.我很确定这可以在C++或C中使用,但我不明白为什么它在这里不起作用!在此先感谢您的帮助!
我不确定我的问题究竟是什么,因为我现在已经使用这种方法一段时间了,从来没有遇到过这个问题.
基本上,正如标题所说.此代码从位于"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
我想计算 a中的项目数NSArray并根据它执行一些操作.我知道这不是什么大问题,但我无法得到它.
请提出一些建议.
我想模仿其功能[NSArray arrayWithObjects:]允许我以这种方式输入争论:[MyClass doSomethingWithObjects: @"str1",@"str2",nil].假设这是可能的,我该如何声明?
我正在尝试从我的.Plist中的数组加载我的数组,但它无法正常工作.
plist看起来像这样:

这是我正在使用的代码:
NSString *path = [[NSBundle mainBundle]pathForResource:@"DiseasePropertyList" ofType:@"plist"];
NSMutableArray *rootLevel = [[NSMutableArray alloc]initWithContentsOfFile:path];
self.myArray = rootLevel;
[rootLevel release];
Run Code Online (Sandbox Code Playgroud) 在类中NSArray,有一种方法isEqualToArray:可以比较两个数组并指示它们是否匹配.
我有两个阵列,它们的元素顺序不同.例如:
NSMutableArray* arr1 = [@[@"one", @"two", @"three"] mutableCopy];
NSMutableArray* arr2 = [@[@"three", @"one", @"two"] mutableCopy];
BOOL same = [arr1 isEqualToArray:arr2];
NSLog(@"%d", same);
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,即使arr1并且arr2具有相同的元素,isEqualToArray:也会返回NO.如何在不循环遍历for/ while循环中的每个元素的情况下比较上面提到的两个数组?
我需要一些帮助来理解如何使用NSArrays/NSMutableArrays作为属性.
目前,我采用的方式有两种不同的方式,如下所示.但它完全不完整,没有明确理解它的机制.哪一项是正确的还是不正确的.
方法1
.m file
interface()
@property (nonatomic, strong) NSMutableArray *arrayOfData;
implementation
<....other code>
self.arrayOfData = [NSMutableArray arrayWithCapacity:count];
[self.arrayOfData addObject:<my object>]
Run Code Online (Sandbox Code Playgroud)
方法2
.h file
@property (nonatomic, strong) NSArray *arrayOfData;
.m file
//Property setter
- (void)setListOfData:(NSMutableArray *)newList {
if (_arrayOfData != newList) {
_arrayOfData = [newList copy];
}
}
//Function which initializes the arrayOfData
NSMutableArray *newData = [[NSMutableArray alloc] init];
.....<code which adds data>
self.arrayOfData = newData;
Run Code Online (Sandbox Code Playgroud) 我创建了一个对象,它看起来像这样
aOffice.branchname
aOffice.lat
aOffice.lng
aOffice.distance
Run Code Online (Sandbox Code Playgroud)
然后将其添加到可变数组(nearbranch).稍后,我计算出每个对象到当前gps位置的距离,并将其添加到对象中并将其放回到数组中.(aOffice.distance)
我现在需要根据aOffice.distance的值对该数组进行排序,但不知道该怎么做
请有人帮帮我
谢谢
I have the following class
class Game {
// An array of player objects
private var playerList: [Player]?
}
Run Code Online (Sandbox Code Playgroud)
I want to enumerate through the playerList; this requires to import Foundation then cast it to a NSArray; but its always complaining that it can't convert it
func hasAchievedGoal() {
if let list:NSArray = playerList {
}
for (index,element) in list.enumerate() {
print("Item \(index): \(element)")
}
}
Run Code Online (Sandbox Code Playgroud)
Errors:
Cannot convert value of type '[Player]?' to specified type 'NSArray?'
I've tried: …
我有一个使用 UIImagePickerConteroller 拍照的原生 Objective-C 应用程序。UIImagePickerController didFinishPickingMedia 委托函数返回图像后,我将图像存储在我的应用程序文档目录中并将图像位置存储在数组中,以便我可以在我的应用程序库视图中显示它。
不经常,但每月一两次我在用户完成拍照后在 AppSee/Fabric 崩溃跟踪器中收到崩溃日志。
在 Appsee 视频中,我可以看到崩溃发生的确切位置。崩溃日志说 NSArray 在被枚举时发生了变异(检查附加的图像)。现在我没有在枚举时对我的照片 mutableArray 执行任何 addObject 或 removeObject 功能。在读取数据以显示我的照片库之前,我正在制作照片数组的可变副本。所以在被枚举时没有突变的机会。
根据崩溃日志,问题似乎与 UIImagePickerController 有关。因为日志说——
-[CAMPriorityNotificationCenter _postNotification:forEntries:]
-[CAMPriorityNotificationCenter _notificationReceiver:]
UIImagePickerController 类使用“CAMPriorityNotification”。但不确定 UIImagePickerController 是否抛出错误并导致崩溃。我将 @try @catch 放入 didFinishPickingMedia 函数中以查找崩溃问题。但是@try @catch 没有抛出错误。所以这让我更加困惑。
有没有人在拍照后遇到类似类型的崩溃问题?任何建议,我将不胜感激。
nsarray ×10
objective-c ×9
ios ×3
iphone ×3
plist ×2
casting ×1
cocoa-touch ×1
comparison ×1
dereference ×1
nsobject ×1
pointers ×1
swift ×1
xcode ×1